
Ich arbeite an einer Kalkulationstabelle. In dieser Tabelle befinden sich zwei Spalten. Spalte A enthält die eindeutige Kennung und Spalte B enthält die ID-Nummern. Eine Kennung kann bis zu 1 oder 5 IDs enthalten. Ich muss alle IDs in eine Zeile verschieben und dabei die Kennung beibehalten. Ich habe ein Vorher- und Nachher-Bild angehängt.
Ich bin sicher, dass es eine Formel gibt, mit der dies möglich ist. Ich hoffe, Sie können helfen.
Vor
Nach
Antwort1
Platzieren Sie dieses Makro in einem Standardmodul und führen Sie es aus:
Sub Macro1()
Dim i As Long, j As Long, k As Long, Na As Long
Dim v As String, Nc As Long
Columns("A:A").Copy Columns("C:C")
ActiveSheet.Range("C:C").RemoveDuplicates Columns:=1, Header:=xlYes
Na = Cells(Rows.Count, "A").End(xlUp).Row
Nc = Cells(Rows.Count, "C").End(xlUp).Row
For i = 2 To Nc
k = 4
v = Cells(i, "C").Value
For j = 2 To Na
If v = Cells(j, 1).Value Then
Cells(i, k) = Cells(j, 2).Value
k = k + 1
End If
Next j
Next i
End Sub
Hier ist eine Beispielausgabe:
Wie Sie sehen, gehen wir davon aus, dass die Eingaben in Spalten erfolgenAUndB. Die Ausgaben kommen in die Spalten daneben. Dem Code ist es egal, ob die Daten sortiert sind oder nicht.
Antwort2
Ich mache das ab und zu, aber ohne VBA und in ein paar Schritten:
1) Sortieren Sie die Daten zunächst nach ID, damit sie gruppiert werden
2) dann in C2: =if(A1=A2,if(A2=A3,B1&","&B2, "Last,"&B1&","&B2),B2)
3) führe das aus
4) Kopieren Sie die Spalte C und fügen Sie sie als Werte ein (sagen wir einfach in die Spalte D), um die Formel loszuwerden
5) nach Spalte D sortieren, alles löschen, wo nicht „letzte“ steht
6) Spalte D auswählen, Registerkarte Daten > Text in Spalten > getrennt > Kommas auswählen > OK
Jetzt ist alles in eindeutige Spalten aufgeteilt und steht in derselben Zeile wie die ID. Sie können die Spalten B und C löschen, da sie nicht mehr benötigt werden.