Daten enpivotieren - VBA
18.03.2021 17:29:25
Lutz
ich möchte/muss Daten entpivotieren.
Das geht mit Power Query ganz gut aber ich muß ein Template basteln und viele unserer Kollegen haben keine Ahnung von PowerPivot.
Ich habe im Netz eionen guten Ansatz gefunden:
Sub KreuzEntpivotieren()
On Error GoTo Error
Dim IntLC As Integer, j As Integer 'IntLR ist die letzte Spalte
Dim LngLR As Integer, i As Long 'LngLR ist die letzte Zeile
Dim Kreuz As Worksheet, Liste As Worksheet
Set Kreuz = ThisWorkbook.Sheets("Daten")
Set Liste = ThisWorkbook.Sheets("Liste")
Kreuz.Activate
IntLC = Kreuz.Range("IV1").End(xlToLeft).Column
LngLR = Kreuz.Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
k = 2
Liste.Activate
For i = 2 To IntLC
For j = 2 To LngLR
Liste.Cells(k, 1).Value = Kreuz.Cells(j, 1).Value
Liste.Cells(k, 2).Value = Kreuz.Cells(1, i).Value
Liste.Cells(k, 3).Value = Kreuz.Cells(j, i).Value
k = k + 1
Next j
Next i
Application.ScreenUpdating = True
Exit Sub
Error:
MsgBox "Ein Fehler ist aufgetreten"
End Sub
Der Code klappt super mit einer festen Spalte und mehreren Ergebnisspalten.
Wir haben aber manchmal 1,2 oder bis zu 6 feste Spalten und dann kommen die Spalten mit den Daten (bis zu 500 Spalten).
Gibt es einen Weg das variable zu gestalten? Am besten im ersten Schritt Auswahl der fixen Spalten und letzter Zeile und im 2ten Schritt die Auswahl der untereinander zu kopierenden Spalten.
Vielleicht hat jemand von Euch so etwas noch aus der Zeit von vor PowerPivot?
Vielen Dank und viele Grüße Lutz