2016-07-20 17 views
0

Im Wesentlichen stecke ich mit einer Hierarchie von .xls-Arbeitsmappen, die ich mithilfe von PowerQuery in ein PowerPivot-Datenmodell kompilieren möchte.Verwenden von PowerQuery zum Abrufen mehrerer Arbeitsblätter aus mehreren Arbeitsmappen in mehreren Unterverzeichnissen

Stammverzeichnis - Einzelhändler Ordner # 1 - Brand # 1 Arbeitsmappe - SKU Arbeitsblatt # 1 - SKU Arbeitsblatt # 2 - Brand # 2 Arbeitsmappe - Einzelhändler Ordner # 2 - Brand # 1 Arbeitsmappe - SKU Worksheet # 1 - SKU Worksheet # 2 - Marke # 2 Arbeitsbuch

Gibt es eine einfache Möglichkeit, dies mit PowerQuery zu tun?

Eine Komplikation: Jede Arbeitsmappe enthält am Ende zwei Übersichtsregisterkarten, die ausgeschlossen werden müssten. Ebenso enthält jeder Ordner eine Arbeitsmappe, die auch eine Aggregation darstellt, die ausgeschlossen werden müsste.

Antwort

1

Persönlich bevorzuge ich es, Funktionen zu vermeiden, wie ich finde sie schwieriger zu debuggen & beizubehalten. Stattdessen habe ich nur aus Ordner verwenden und filtern, um die Dateien, die ich will, dann eine benutzerdefinierte Spalte mit der Formel hinzufügen:

= Excel.Workbook ([Contents])

Dann können Sie diese in Blätter und Tabellen erweitern, dass die Liste filtern und die Excel erweitern. Workbook.Data-Spalte, um zu Datenzellen zu gelangen. Sie können genügend Metadatenspalten aufbewahren, um die Quelle jeder Zeile (welcher Ordner/Datei/Blatt) zu identifizieren.

Dadurch wird die Pflege der gesamten Query in der PQ-Benutzeroberfläche beibehalten. Wenn Probleme auftreten (was bei Excel-Quellen unvermeidlich ist), können Sie den gesamten Prozess durchlaufen und das Problem isolieren.

Ich benutze nur Funktionen, wenn es mehrere Aufrufe von verschiedenen Quellenabfragen gibt. Das klingt hier nicht so.

+1

Das ist großartig! Ich habe gerade angefangen, PowerQuery gestern zu verwenden, und ich konnte mehrere Verzeichnisse ziemlich schmutziger Daten in einer einzigen Datenbank kompilieren - meine alternative Lösung durchlief diese Verzeichnisse mit VBA, zog in ein riesiges Array und schrieb dann in eine CSV. Das ist viel einfacher. Danke für deine Antwort. –

0

Es sollte sein. Sie können From Folder (Folder.Files) verwenden, um auf die Excel-Arbeitsmappen zuzugreifen und die Summary-Arbeitsmappen herauszufiltern. Anschließend können Sie für die übrigen Arbeitsmappen eine Funktion erstellen, die bei einer Excel-Arbeitsmappe zum gewünschten Arbeitsblatt wechselt und die letzten beiden Spalten entfernt. Sie können eine benutzerdefinierte Spalte hinzufügen, die diese Funktion dann aufruft.