Power Query: Anfügen neuer Tabellen mit abweichender Spaltenanzahl ohne Datenverlust | Teil 2

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.

Nicht nur die Spalte Data, sondern auch die Spalte Name behalten

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.

    In einem benutzerdefinierten Schritt alle Spaltenüberschriften in einer Liste hinterlegen

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

    Mit einem benutzerdefinierten Schritt zu einem bestimmten Abfrageschritt zurückkehren

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

    Feste Spalteninformationen durch Schrittnamen ersetzen

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.

    Monatsinformation aus dem Tabellennamen extrahieren

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

Alle Tabellennamen und alle Spaltennamen bleiben beim Anfügen der Daten erhalten

Wer in Power Query Wissen aufbauen oder ausbauen möchte, findet hier passende Kurse:

 

 

Dieser Beitrag wurde unter Excel abgelegt und mit , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert