Power Query kann seit einiger Zeit auch PDFs einlesen. Das klappt mal mehr und mal weniger gut. Manchmal kommen die Inhalte nicht korrekt an, beispielsweise sind Daten in den Zeilen versetzt. Im folgenden Power Query-Rezept zeige ich, wie verrutschte Daten automatisiert den passenden Zeilen zugeordnet werden.
Was ist das Problem? Wie lässt es sich lösen?
- Die Daten in der Spalte Artikelnummer sind um eine Zeile nach unten verrutscht.
- Demzufolge müssen die Artikelnummern aus der Folgezeilen den Daten darüber zugeordnet werden.
Diese Panne ist ärgerlich und auf den ersten Blick sieht das nach einem mühsamen manuellen Nachbessern aus. Doch dieser Eindruck täuscht, denn mit Hilfe von zwei Indexspalten lässt sich das Problem in wenigen Schritten lösen.
Die PDF einlesen und die gewünschte Seite oder Tabelle wählen
Zunächst einmal wird die Seite oder die Tabelle aus der PDF importiert und der auszuwertende Teil der PDF für den Import ausgewählt. Dazu gehe ich wie folgt vor:
- Über Daten > Daten abrufen > Aus Datei > Aus PDF lese ich die PDF-Datei in Power Query ein.
- Im Navigationsfenster wähle ich – wie unten gezeigt – die Tabelle oder die Seite (Page) aus.
- Falls sich die Überschriften noch in der ersten Zeile des Datenbereiches befinden, werden diese über Start > Erste Zeile als Überschrift verwenden angehoben.
- Rechts im Aufgabenbereich benenne ich die Abfrage um in Preisliste.
Zwischenfazit: Nach dem Einlesen und dem Versäubern der nicht benötigten Dinge sind zwar alle Daten vorhanden, doch die Artikelnummern sind um eine Zeile nach unten versetzt.
Mit zwei Index-Hilfsspalten die Inhalte korrekt zuordnen
- Um nun jede Artikelnummer aus der Folgezeile der vorhergehenden Zeile zuzuordnen, nutze ich zwei Index-Hilfsspalten.
- Sie bilden die Basis für einen Join der Tabelle mit sich selbst.
Das hört sich zwar kompliziert an, ist es aber nicht. So geht’s:
- Ich erstelle über Spalte hinzufügen > Indexspalte > Von 1 eine erste Indexspalte, die bei 1 beginnt. Sie erhält automatisch den Namen Index.
- Dies wiederhole ich für eine zweite Indexspalte, die aber bei 0 beginnt. Dazu wähle ich die Befehlsfolge Spalte hinzufügen > Indexspalte > Von 0. Die neue Spalte erhält automatisch den Namen Index.1.
- Nun joine ich die Abfrage mit sich selbst über die Befehlsfolge Start > Abfragen zusammenführen > Abfragen zusammenführen und wähle die Abfragen und die zu kombinierenden Spalten wie in der folgenden Abbildung aus.
- Ich markiere die Spalten ArtikelNr., Index und Index.1. Per Rechtsklick im Spaltenkopf wähle ich Spalten entfernen.
- Nun geht’s ans Auspacken der neuen ArtikelNr. durch Klicken auf den Doppelpfeil in der durch den Join entstandenen Spalte Hinzugefügter Index1.
- In der neuen Spalte ArtikelNr. wähle ich über den Filterpfeil Leere entfernen, um die Leerzeile unten zu löschen.
- Per Rechtsklick in der Spalte ArtikelNr. wähle ich Verschieben > An den Anfang.
- Nun ist alles an seinem richtigen Platz.
- Als letzten Schritt passe ich noch die Datentypen an.
Fazit
Es lassen sich nicht nur Daten aus Spalten auf andere Spalten übertragen. Durch Joinen mit Hilfe von Indexspalten können Daten auch über Zeilen hinweg transferiert werden.
Interessiert an mehr Techniken und Tipps zu Power Query?
Wer sein Wissen zu Power Query systematisch auf- und ausbauen will, kann dazu einen meiner Online-Kurse buchen.
Auf dieser Seite gibt es alle aktuellen Termine.