Moin!
@Sanja: Du wirst mit dieser Power Query Version nicht viel anfangen können, aber die Meinung der Kollegen hätte ich gern.
@PQ-Kenner:
Ich schummle zuerst ein Bischen...
Ich füge ein Blatt "Customer" vor alle anderen Blätter. Darin als erste Zeile:
Categ_Date, Actual_01.01.2022, Budget_01.01.2022, Deviation, Actual_01.02.2022, Budget_01.02.2022, Deviation, ...
dann Datei speichern.
In einer separaten Datei (wobei es kann auch dieselbe sein), öffne ich eine PQ Abfrage mit:
let
Quelle = Excel.Workbook(File.Contents("C:\herber_forum\151936.xlsb"), null, true),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each Text.StartsWith([Name], "Customer")),
#"Erweiterte Data" = Table.ExpandTableColumn(#"Gefilterte Zeilen", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24", "Column25", "Column26", "Column27", "Column28", "Column29", "Column30", "Column31", "Column32", "Column33", "Column34", "Column35", "Column36", "Column37"}, {"Data.Column1", "Data.Column2", "Data.Column3", "Data.Column4", "Data.Column5", "Data.Column6", "Data.Column7", "Data.Column8", "Data.Column9", "Data.Column10", "Data.Column11", "Data.Column12", "Data.Column13", "Data.Column14", "Data.Column15", "Data.Column16", "Data.Column17", "Data.Column18", "Data.Column19", "Data.Column20", "Data.Column21", "Data.Column22", "Data.Column23", "Data.Column24", "Data.Column25", "Data.Column26", "Data.Column27", "Data.Column28", "Data.Column29", "Data.Column30", "Data.Column31", "Data.Column32", "Data.Column33", "Data.Column34", "Data.Column35", "Data.Column36", "Data.Column37"}),
#"Höher gestufte Header" = Table.PromoteHeaders(#"Erweiterte Data", [PromoteAllScalars=true]),
#"Gefilterte Zeilen2" = Table.SelectRows(#"Höher gestufte Header", each Text.EndsWith([Categ_Date], "Revenue") or Text.EndsWith([Categ_Date], "Costs")),
#"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Gefilterte Zeilen2", {"Customer", "Categ_Date"}, "Data Typ", "Wert"),
#"Gefilterte Zeilen1" = Table.SelectRows(#"Entpivotierte andere Spalten", each not Text.StartsWith([Data Typ], "Deviation")),
#"Spalte nach Position teilen" = Table.SplitColumn(#"Gefilterte Zeilen1", "Data Typ", Splitter.SplitTextByEachDelimiter({"_"}, QuoteStyle.Csv, true),{"Data Type", "Date"}),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Spalte nach Position teilen", "Categ_Date", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, true), {"Category", "Spalte1.2"}),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Wert", type number}}),
#"Pivotierte Spalte" = Table.Pivot(#"Geänderter Typ", List.Distinct(#"Geänderter Typ"[Spalte1.2]), "Spalte1.2", "Wert", List.Sum),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Pivotierte Spalte",{"Category", "Customer", "Date", "Data Type", "Revenue", "Costs"})
in
#"Neu angeordnete Spalten"
das Ergebnis entspricht das Format von Sanja.
Nun ist ja die Frage, wie könnte ich am geschickteste das Einfügen von diesem Pseudo-Customer-Blatt?
Alle Customer-Blätter in aktive Tabellen umwandeln und als PQ-Quelle Excel.CurrentWorkbook() geht auch ganz gut, aber die Spalten-Überschriften lassen sich dann nicht so leicht nutzen ...
Für die Umwandlung in aktiven Tabellen würde ich eine Marko verwenden. Man konnte darin die Überschriften setzen (ers reicht, wenn es im ersten Blatt vorkommt). Es bleibt aber Bastelei. Es lässt sich nicht "schön" umstellen.
Hat jemand eine Idee?
VG
Yal