In Teil 1 habe ich gezeigt, wie mit einer einzigen Power Query-Abfrage stets alle Tabellen einer Arbeitsmappe automatisch angefügt werden, auch wenn im Laufe der Zeit zusätzliche Spalten hinzukommen. Dabei habe ich die M-Funktion Table.Combine eingesetzt.
Der Nachteil dieser Lösung: Table.Combine kann als Parameter nur eine Liste – sprich EINE Spalte – verarbeiten.
Was aber, wenn zusätzlich zu den Daten noch der Name der Tabelle benötigt wird, um beispielsweise den Monat zu hinterlegen, aus dem die Daten stammen? Auch das ist mit einem kleinen Eingriff in den M-Code möglich. Hier sind die Schritte.
Relevante Spaltennamen in einem Schritt ermitteln und beim Entpacken nutzen
Wie schon in Teil 1 gezeigt, wähle ich die gesamte Arbeitsmappe für die Transformation aus, filtere dann nach den Tables und behalte nur die Spalten, die ich benötige.
Diesmal ist das nicht nur die Spalte Data, sondern auch die Spalte Name, aus der ich später die Information zum Monat entnehme.
Um die Spalte Name zu behalten, könnte ich auf die altbewährte Methode zurückgreifen und die Spalte Data über den Doppelpfeil entpacken. Doch wie schon in Teil 1 beschrieben, werden dabei nur die gerade verfügbaren Spalten zum Entpacken berücksichtigt. Dieses Manko umgehe ich, indem ich einen Schritt voranstelle, der alle relevanten Spaltennamen ermittelt. Diesen Schrittnamen gebe ich später beim Entpacken mit. Ich gehe wie folgt vor:
- Ich klicke auf das fx neben der Bearbeitungsleiste [1] und erzeuge so einen neuen benutzerdefinierten Schritt, der sich auf den vorherigen namens Andere entfernte Spalten bezieht.
- Auf die Spalte Data des Schrittes wende ich die Funktion Table.Combine an, indem ich den M-Code erweitere – wie unter [2] in der gelben Markierung gezeigt.
- Anschließend schließe ich den gesamten Ausdruck in die Funktion Table.ColumnNames ein – wie unter [3] in der blauen Markierung gezeigt.
- Diesen Schritt benenne ich um in Spaltennamen [4].
Zur Erläuterung: Auf diese Weise füge ich alle vorhandenen Tabellen zusammen und ermittle die Spaltenüberschriften dieser neuen Tabelle. Diese liegen dann im Schritt namens Spaltennamen in einer Liste vor, die ich später verwende. - Nach dieser kleinen Umleitung kehre ich wieder auf die Hauptstraße zurück, indem ich auf fx klicke und dort nach der Eingabe von = # den Schritt #“Andere entfernte Spalten“ auswähle.
- Anschließend kann ich – wie in Teil 1 gezeigt – die Daten über den Doppelpfeil in der Spalte Data entpacken. Hierbei werden im M-Code alle Spalten aufgelistet, die aktuell zur Verfügung stehen. Dieses Problem behebe ich, indem ich im M-Code die festen Bezeichnungen durch den Schrittnamen Spaltennamen ersetze.
Monatsinformation aus dem Namen der Tabelle extrahieren
Um nun noch den Namen der Tabelle als Monatsinformation verwenden zu können, gehe ich so vor:
- Ich markiere die Spalte Name [1], wähle im Register Transformieren [2] die Befehlsfolge Extrahieren [3] > Letzte Zeichen [4] und stelle 7 ein.
- Abschließend benenne ich noch die Spalte Name per Doppelklick um in Monat.
Auch hier kann sich das Ergebnis sehen lassen: Alle Tabellennamen und alle Spaltennamen sind beim Anfügen der Daten erhalten geblieben.
Wer in Power Query Wissen aufbauen oder ausbauen möchte, findet hier passende Kurse:
- Daten automatisiert importieren, aufbereiten und abgleichen
- Mit eigenen Abfrage-Tools die Datenaufbereitung optimieren