Die folgende Excel-Tabelle muss neu geordnet werden
aus
ID Name1 Name2 Name3
1 Alf Bert Fritz
2 Curt
3 Otto Mike
4 Sue Zack
Zu
ID Name
1 Alf
1 Bert
1 Fritz
2 Curt
3 Otto
3 Mike
4 Sue
4 Zack
Mir fehlt der richtige Suchbegriff, ich schätze, dass er recht häufig vorkommt, kann ihn aber nicht richtig beschreiben.
Antwort1
Probieren Sie diesen Code aus. Er ist selbsterklärend, da er Schritt für Schritt abläuft. Ihre Eingabedaten beginnen bei A1 und Ihre Ausgabe beginnt bei A8. Dies kann geändert werden.
Natürlich ist auch ein kürzerer Code möglich und ich vermute, dass sich auch eine Array-Formel erstellen lässt.
Sub single_col()
Dim icell As Integer
Dim irow As Integer, icol As Integer
Dim nrows As Integer, ncols As Integer
Dim rng_all As Range, rng_curr As Range, rng_trg As Range
Set rng_all = Range("A2:D5")
Set rng_trg = Range("A8")
nrows = rng_all.Rows.Count
icell = 0
For irow = 1 To nrows
Set rng_curr = rng_all.Rows(irow)
ncols = WorksheetFunction.CountA(rng_curr)
For icol = 2 To ncols
icell = icell + 1
Dim name As String
name = rng_curr.Cells(1, icol).Text
rng_trg.Value = rng_curr.Cells(1, 1).Text
rng_trg.Offset(0, 1).Value = name
Set rng_trg = rng_trg.Offset(1, 0)
Next icol
Next irow
End Sub
PS: Der obige Code enthält bereits die im Kommentar vorgeschlagene Änderung.
Antwort2
Sie haben ein Pivot-Tabellenlayout, das Sie "entpivotieren" möchten. DiesArtikelvon Jon Walkenbach zeigt, was man mit nur wenigen Tastenanschlägen machen kann und dafür ist kein VBA-Code nötig.
In Ihrer speziellen Situation würde ich Folgendes tun.
1. Öffnen Sie das „alte“ PivotTable-Menü mit Alt + D, P. Sie erhalten ein Dialogfeld wie das unten gezeigte. Wählen Sie die Option „Mehrere Konsolidierungsbereiche“ und klicken Sie auf „Weiter“.
2. Wählen Sie im nächsten Schritt „Ich werde die Seitenfelder erstellen“ und klicken Sie auf „Weiter“.
3. Markieren Sie Ihren Zellbereich, sodass er im oberen Teil des Dialogfelds definiert ist, und klicken Sie dann auf die Schaltfläche „Hinzufügen“, um diesen Bereich in die Liste „Alle Bereiche“ zu kopieren. Klicken Sie auf „Weiter“.
4. Wählen Sie eine Zelle außerhalb Ihrer Daten. Hier sehen Sie, dass ich auf demselben Blatt F3 gewählt habe. (Sie können bei Bedarf auch ein anderes Blatt wählen.) Klicken Sie auf „Fertig“.
5. Sie erhalten eine Pivot-Tabelle wie diese. Deaktivieren Sie im Dialogfeld die Kontrollkästchen „Zeile“ und „Spalte“.
6.Dadurch erhalten Sie eine Pivot-Tabelle mit einer Zelle.
7. Doppelklicken Sie dann auf die eine Zelle und Sie erhalten auf einem neuen Blatt Ihre „nicht pivotierten“ Daten als neue Tabelle:
Mit diesen Tabellendaten können Sie nun Spalte C filtern, um die nicht leeren Felder anzuzeigen, oder Sie können Spalte B löschen und erhalten das gewünschte Layout.