Wandeln Sie das horizontale Tabellenlayout in eine vertikale Tabelle um

Wandeln Sie das horizontale Tabellenlayout in eine vertikale Tabelle um

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“.

Bildbeschreibung hier eingeben

2. Wählen Sie im nächsten Schritt „Ich werde die Seitenfelder erstellen“ und klicken Sie auf „Weiter“.

Bildbeschreibung hier eingeben

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“.

Bildbeschreibung hier eingeben

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“.

Bildbeschreibung hier eingeben

5. Sie erhalten eine Pivot-Tabelle wie diese. Deaktivieren Sie im Dialogfeld die Kontrollkästchen „Zeile“ und „Spalte“.

Bildbeschreibung hier eingeben

6.Dadurch erhalten Sie eine Pivot-Tabelle mit einer Zelle.

Bildbeschreibung hier eingeben

7. Doppelklicken Sie dann auf die eine Zelle und Sie erhalten auf einem neuen Blatt Ihre „nicht pivotierten“ Daten als neue Tabelle:

Bildbeschreibung hier eingeben

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.

verwandte Informationen