Office-Blog

Power Query: Fehler beim Import von PDF-Inhalten korrigieren – zusammenbringen, was zusammengehört

15.02.2024   Hildegard Hügemann

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.

Links das Original mit einer vertikalen Verschiebung nach dem Import aus einer PDF und rechts das mit Power Query korrigierte Ergebnis ohne vertikalen Versatz

Links das Original mit einer vertikalen Verschiebung nach dem Import aus einer PDF und rechts das mit Power Query korrigierte Ergebnis ohne vertikalen Versatz

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.
Den Befehl zum Einlesen von Daten aus einer PDF aufrufen

Den Befehl zum Einlesen von Daten aus einer PDF aufrufen

  • Im Navigationsfenster wähle ich – wie unten gezeigt – die Tabelle oder die Seite (Page) aus.
In der Vorschau ist schon zu erkennen, dass Inhalte versetzt sind

In der Vorschau ist schon zu erkennen, dass Inhalte versetzt sind

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

Nach dem Einlesen haben die Artikelnummern einen Versatz von einer Zeile nach unten

Das Problem: Nach dem Einlesen haben die Artikelnummern einen Versatz von einer Zeile nach unten

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

Zwei Hilfsspalten mit Indizes, einmal von 1 und einmal von 0 beginnend, sorgen für die passende Zuordnung der Artikelnummern zur jeweilen Zeile

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

Beim Joinen dienen die beiden Index-Hilfsspalten als Schlüssel für die Zuordnung der Artikelnummern zu ihren jeweiligen Zeilen

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

Die alte Spalte ArtikelNr. wurde entfernt, und stattdessen wird nun eine neue Spalte ArtikelNr. aus der gejointen Tabelle entpackt

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

Die Artikelnummern stehen nun in der richtigen Zeile und die Preisliste wurde damit korrekt aus der PDF ausgelesen

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.

TIPP: Wer hier im Blog ALLE Rezepte zu Power Query finden möchte, gibt einfach oben rechts in das Suchfeld Power-Query-Rezept ein.

 

 

 

 

Über den Autor

Hildegard Hügemann

- Dipl.-Informatikerin
- Zertifizierte Office-Trainerin mit den Schwerpunkten Excel, Access, Word
- Entwicklerin von Excel-Tools zur Projekt-, Produktions- und Verkaufssteuerung
- Coach bei der Datenaufbereitung mit Access, Power Query und Power Pivot
- Entwicklerin von Access-Datenbanken für Mittelständler und Behörden
- Bloggerin zu Excel und Access auf www.huegemann-informatik.de
- Autorin für Microsoft Press, dpunkt.verlag und das »Projekt Magazin«