Note: The other languages of the website are Google-translated. Back to English

Hoe dubbele rijen naar kolommen in Excel te transponeren?

Stel dat u een reeks gegevens in Excel heeft, u wilt nu de dubbele rijen naar meerdere kolommen transponeren zoals in het onderstaande screenshot, heeft u dan goede ideeën om deze taak op te lossen?

Transponeer dubbele rijen naar kolommen met VBA-code

doc-convert-dubbele-rijen-kolommen-1


pijl blauw rechts bel Transponeer dubbele rijen naar kolommen met VBA-code

Helaas is er geen directe manier om ermee om te gaan in Excel, maar u kunt een VBA-code maken om het op te lossen, doe dit als volgt:

1. Houd de toets ingedrukt ALT + F11 toetsen om de te openen Microsoft Visual Basic for Applications-venster.

2. Klikken Invoegen > Moduleen plak de volgende code in het Module Venster.

VBA-code: transponeer dubbele rijen naar meerdere kolommen

Sub ConvertTable()
'Updateby Extendoffice
Dim xArr1 As Variant
Dim xArr2 As Variant
Dim InputRng As Range, OutRng As Range
Dim xRows As Long
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set OutRng = OutRng.Range("A1")
xArr1 = InputRng.Value
t = UBound(xArr1, 2): xRows = 1
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 2 To UBound(xArr1, 1)
        If Not .exists(xArr1(i, 1)) Then
            xRows = xRows + 1: .Item(xArr1(i, 1)) = VBA.Array(xRows, t)
            For ii = 1 To t
                xArr1(xRows, ii) = xArr1(i, ii)
            Next
        Else
            xArr2 = .Item(xArr1(i, 1))
            If UBound(xArr1, 2) < xArr2(1) + t - 1 Then
                ReDim Preserve xArr1(1 To UBound(xArr1, 1), 1 To xArr2(1) + t - 1)
                For ii = 2 To t
                    xArr1(1, xArr2(1) + ii - 1) = xArr1(1, ii)
                Next
            End If
            For ii = 2 To t
                xArr1(xArr2(0), xArr2(1) + ii - 1) = xArr1(i, ii)
            Next
            xArr2(1) = xArr2(1) + t - 1: .Item(xArr1(i, 1)) = xArr2
        End If
    Next
End With
OutRng.Resize(xRows, UBound(xArr1, 2)).Value = xArr1
End Sub

3. Druk vervolgens op F5 sleutel om deze code uit te voeren, selecteer het gegevensbereik waarvan u de dubbele rijen naar meerdere kolommen wilt converteren in het uitgeklapte dialoogvenster, zie screenshot:

doc-convert-dubbele-rijen-kolommen-2

4. Klikken OKen selecteer een cel waar u het resultaat in het volgende dialoogvenster wilt plaatsen, zie screenshot:

doc-convert-dubbele-rijen-kolommen-3

5. En klik dan OK knop, zijn uw geselecteerde gegevens geconverteerd naar:

doc-convert-dubbele-rijen-kolommen-4


Gerelateerde artikelen:

Hoe kolommen en rijen in een enkele rij te transponeren / converteren?

Hoe kolommen en rijen in één kolom te transponeren / converteren?

Hoe een enkele kolom naar meerdere kolommen in Excel transponeren / converteren?


De beste tools voor kantoorproductiviteit

Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Versleutel cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula-balk (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken in gefilterd bereik...
  • Voeg cellen / rijen / kolommen samen zonder gegevens te verliezen; Gespleten cellen inhoud; Combineer dubbele rijen / kolommen... Voorkom dubbele cellen; Vergelijk Ranges...
  • Selecteer Dupliceren of Uniek Rijen; Selecteer lege rijen (alle cellen zijn leeg); Super zoeken en fuzzy zoeken in veel werkboeken; Willekeurige selectie ...
  • Exacte kopie Meerdere cellen zonder de formuleverwijzing te wijzigen; Maak automatisch verwijzingen naar meerdere bladen; Plaats kogels, Selectievakjes en meer ...
  • Extraheer tekst, Tekst toevoegen, Verwijderen op positie, Ruimte verwijderen; Paging-subtotalen maken en afdrukken; Converteren tussen celinhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerd sorteren per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan 300 krachtige functies. Ondersteunt Office / Excel 2007-2019 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Gratis proefperiode van 30 dagen met volledige functies. 60 dagen geld-terug-garantie.
kte tabblad 201905

Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met 50% en vermindert elke dag honderden muisklikken!
officetab onderkant

 

Comments (8)
Nog geen beoordelingen. Beoordeel als eerste!
Deze opmerking is gemaakt door de moderator op de site
Geweldig voorbeeld - heeft me veel tijd bespaard. Hartelijk bedankt !!!
Santosh
Deze opmerking is gemaakt door de moderator op de site
Heel erg bedankt!

God zegene je.
Syed
Deze opmerking is gemaakt door de moderator op de site
Ik ben zo ongelooflijk blij dat dit is gelukt. Je bent mijn held!!!!
Jon
Deze opmerking is gemaakt door de moderator op de site
Echt geweldig. Heeft me veel tijd bespaard
Alex
Deze opmerking is gemaakt door de moderator op de site
Werkt alleen als er evenveel duplicaten zijn en hem a noemen. Het werkt niet als er verschillende aantallen duplicaten zijn.
Brian
Deze opmerking is gemaakt door de moderator op de site
Dit werkt prima voor mij met een verschillend aantal duplicaten Brian. Ik had alleen een probleem met het eerste duplicaat dat twee keer op mijn uitvoer werd weergegeven, maar dat was erg klein. Ik wou alleen dat ik wist hoe ik de dubbele resultaten kon kopiëren naar een door komma's gescheiden formaat in plaats van nieuwe kolommen voor elk ervan.
Joe
Deze opmerking is gemaakt door de moderator op de site
Hallo! Kan iemand mij helpen...

Ik heb deze code gevonden om rijen met gegevens met een unieke ID om te zetten in een enkele rij per ID met meerdere kolommen (minimaal kolom 5 - inclusief ID, maximaal kolommen 25 - inclusief ID). Vervolgens worden alle dubbele rijen verwijderd op basis van een unieke ID. Deze code werkt min of meer, het enige probleem is dat het niet twee kolommen met gegevens overdraagt.

Het aantal rijen gegevens per unieke ID varieert van 1 tot 6 (daarom zou ik minimaal 5 kolommen tot maximaal 25 kolommen nodig hebben)

Er zijn 20,000 gegevensrijen, maar ik kan de gegevens per afdeling opsplitsen voor minimaal 5,000 gegevensrijen en elke afdeling afzonderlijk beheren.

Bedankt voor je hulp!


Mijn gegevens zien er ongeveer zo uit

ABCDE
ID OMSCHRIJVING STAAT # DATUM
3 CPR VS 567 6-19-2019
3 AET US 568 6-19-2019
4 CPR VS 6-19-2019
4 AET
4 AED

enz.

Ik wil dat het er zo uitziet

ABCDEFGHIJKLM ENZ.....
ID OMSCHRIJVING STAAT # DATUM BESCHRIJVING STAAT # DATUM BESCHRIJVING STAAT # DATUM
3 CPR VS 567 6-19-2019 AET VS 568 6-19-2019
4 CPR VS AET VS AED VS

Hier is de code die ik heb gevonden dat soort werkt (waarschijnlijk voor waar het voor is geschreven, het neemt alleen de gegevens in kolommen D en E over en laat kolom B & C weg ... en laat twee lege kolommen per dataset achter. Ik vind dat leuk het verwijdert de duplicaten nadat alle gegevens naar een enkele kolom zijn verplaatst op basis van een unieke ID

Subadressen_To_Columns()

Dim laatsteRij Zo Lang
Dim addressCount As Integer: addressCount = 0

lastRow = Range("A" & Rows.Count).End(xlUp).Rij

Voor i = laatsteRij Naar 3 Stap -1
Als Cellen(i, 1).Waarde = Cellen(i - 1, 1).Waarde Dan
adrestelling = adrestelling + 1
Range(Cells(i - 1, 10), Cells(i - 1, (addressCount * 5) + 10)) = Range(Cells(i, 4), Cells(i, (addressCount * 5) + 4)). Waarde
Rijen(i).Verwijderen
Anders
adrestelling = 0
End If
Volgende i

End Sub
ariel
Deze opmerking is gemaakt door de moderator op de site
dag iedereen

Ik heb deze code geprobeerd en het werkte met succes.

Mijn vraag is Hoe kan ik hetzelfde doen met MS Access voor grotere gegevens. Kan ik een query krijgen die hetzelfde werkt of niet?

Heel erg bedankt .
Bader Ibrahim
Er zijn nog geen reacties geplaatst
Laat uw commentaar
Posten als gast
×
Beoordeel dit bericht:
0  Personages
Voorgestelde locaties