Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1636to1640
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten aus Tabelle für Pivot umgruppieren

Daten aus Tabelle für Pivot umgruppieren
10.08.2018 17:54:02
Sebi
Hallo zusammen,
folgende Problematik beschäftigt mich aktuell.
Ich muss regelmäßig Datenexports für Pivot-Auswertungen aufbereiten. Meistens stehen in den ersten Spalten des Exports Texte (z.B. Projekt-ID, Projektname, Projektstatus etc.) und in den darauffolgenden Spalten Zahlen (z.B. pro Monate, pro Quartal etc.)
Für die Pivot-Auswertung sollen nun die Überschriften der Zahlenspalten sowie die Zahlen aus den Zahlenspalten selbst jeweils in einer eigenen Spalte untereinander stehen, damit diese besser für eine Pivot-Auswertung verwendet werden können.
Hier eine Arbeitsmappe als Beispiel wie die Daten aktuell aussehen und wie das Zielbild sein soll. Die Anzahl der Text- und Zahlenspalten variiert allerdings bei meinen Export. https://www.herber.de/bbs/user/123268.xlsx
Da die Exports 1.000+ Zeilen haben ist ein manuelles umgruppieren der Daten viel zu aufwendig und ich würde dies gerne mit VBA lösen.
In einem alten Forumsbeitrag: https://www.herber.de/forum/archiv/1356to1360/1357613_Pivot_Tabelle_12_Monate_in_Zeilen_drehen.html
habe ich auch schon eine fast passende Lösung gefunden, allerdings ist der VBA Code für 4 Textspalten und 12 Zahlenspalten geschrieben worden. Da ich VBA-Anfänger bin, weiß ich nun leider nicht an welchen Stellen ich den Code wie anpassen muss, damit er mit meiner jeweiligen Datentabelle (Export) funktioniert.
Kann mir bitte jemand weiterhelfen und sagen, an welche Stelle im Code ich die Parameter für die Anzahl der Textspalten und die Anzahl an Zahlenspalten anpassen muss.
Vielen Dank im Voraus.
Gruß Sebi
Aktueller VBA Code:
Sub Daten_Umgruppieren()
' Daten_Umgruppieren für Pivot-Auswertung
Dim wks As Worksheet, ZeileTitel As Long, Zeile As Long
Dim Spalte As Long, SpalteMonat As Long, SpalteWerte As Long
Dim Zeile1 As Long, Zeile2 As Long, rngA_D As Range
ZeileTitel = 1      'ggf. anpassen!
SpalteMonat = 17    'Zielspalte für Monatsnamen
SpalteWerte = 18    'Zielspalte für Werte zu Monaten
Set wks = ActiveSheet
'Blatt mit Ausgangsdaten kopieren
wks.Copy After:=wks
Set wks = ActiveSheet
wks.Name = "PivotData"
Application.ScreenUpdating = False
With wks
Zeile1 = ZeileTitel + 1
Zeile2 = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngA_D = .Range(.Cells(Zeile1, 1), .Cells(Zeile2, 4))
.Cells(ZeileTitel, SpalteMonat).Value = "Monat"
.Cells(ZeileTitel, SpalteWerte).Value = "Wert"
For Spalte = 5 To 16 'Spalten E bis P mit Werten zu den Monaten
'Zielzeile für Daten zu Monat
Zeile = Zeile1 + (Spalte - 5) * rngA_D.Rows.Count
'Datenblock in Spalten A bis D kopieren
rngA_D.Copy Destination:=.Cells(Zeile, 1)
'Werte zum Monat verschieben in neue Wertespalte
.Range(.Cells(Zeile1, Spalte), .Cells(Zeile2, Spalte)).Cut _
Destination:=.Cells(Zeile, SpalteWerte)
'Monatsname in Titelzeile kopieren in neue Monatsspalte
.Cells(ZeileTitel, Spalte).Copy _
Destination:=.Range(.Cells(Zeile, SpalteMonat), _
.Cells(Zeile + rngA_D.Rows.Count - 1, SpalteMonat))
Next
.Range(.Columns(SpalteMonat), .Columns(SpalteWerte)).EntireColumn.AutoFit
'alte Monatsspalten löschen
.Range(.Columns(5), .Columns(16)).Delete shift:=xlShiftToLeft
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:= _
.Cells(ZeileTitel, 1), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.SortFields.Add Key:= _
.Cells(ZeileTitel, 2), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.SortFields.Add Key:= _
.Cells(ZeileTitel, 3), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.SortFields.Add Key:= _
.Cells(ZeileTitel, 4), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.SortFields.Add Key:= _
.Cells(ZeileTitel, 5), SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:="Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez", _
DataOption:=xlSortNormal
With .Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.SetRange wks.Range(wks.Cells(ZeileTitel, 1), wks.Cells(Zeile + rngA_D.Rows.Count - 1, _
_
6))
.Apply
End With
End With
Application.ScreenUpdating = True
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: alte Lösung
10.08.2018 17:59:03
Fennek
Hallo,
bei einer anderen Frage vor wenigen Tagen half dieser Code:

Sub Ent_Pivot()
With Tabelle1
ls = .Cells(2, Columns.Count).End(xlToLeft).Column
For j = 5 To ls
.Columns(j).SpecialCells(2).Offset(, -(j - 4)).Copy
Tabelle2.Cells(j - 4, 1).PasteSpecial xlPasteValues, , , True
Next j
.Range("E2", .Cells(2, ls)).Copy
Tabelle2.Range("A1").PasteSpecial xlPasteValues, , , True
End With
End Sub
Anpassen solltest du es selbst.
mfg
(abgewandelt von einem snb-Code)
AW: alte Lösung
10.08.2018 18:10:48
Sebi
Bitte entschuldige, meine VBA Kenntnisse sind jedoch leider gleich 0, daher weiß ich nicht wie ich den Code anpassen muss damit er für meine Problematik funktioniert. Kannst du, oder sonst jemand hier im Forum, mir dabei bitte helfen?
Anzeige
AW: Daten aus Tabelle für Pivot umgruppieren
10.08.2018 21:46:24
Günther
Moin Sebi,
es geht auch ohne eine einzige Zeile VBA ...
Ich habe das mit wenigen Mausklicks per Stichwort: Power Query (2010/13) aka Daten | Abrufen und transformieren (2016/365) geschafft: https://www.herber.de/bbs/user/123270.xlsx
Gruß
Günther

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige