Fehlerbehandlung

Ähnlich wie Excel und die DAX-Sprache über eine IFERROR-Funktion verfügen, hat Power Query eine eigene Syntax zum Testen und Abfangen von Fehlern.

Wie in dem Artikel über den Umgang mit Fehlern in Power Query erwähnt, können Fehler entweder auf Schritt- oder Zellebene auftreten. In diesem Artikel geht es darum, wie Sie Fehler auf der Grundlage Ihrer eigenen Logik abfangen und verwalten können.

Hinweis

Um dieses Konzept zu demonstrieren, wird in diesem Artikel eine Excel-Arbeitsmappe als Datenquelle verwendet. Die hier vorgestellten Konzepte gelten für alle Werte in Power Query und nicht nur für diejenigen, die aus einer Excel-Arbeitsmappe stammen.

Die Beispieldatenquelle für diese Demonstration ist eine Excel-Arbeitsmappe mit der folgenden Tabelle.

Beispieldaten aus Excel.

Diese Tabelle aus einer Excel-Arbeitsmappe enthält Excel-Fehler wie #NULL!, #REF!, und #DIV/0! in der Spalte Standard Rate. Wenn Sie diese Tabelle in den Power Query-Editor importieren, zeigt das folgende Bild, wie sie aussehen wird.

Beispieltabelle in Power Query.

Beachten Sie, dass die Fehler aus der Excel-Arbeitsmappe mit dem Wert [Error] in jeder Zelle angezeigt werden.

In diesem Artikel erfahren Sie, wie Sie einen Fehler durch einen anderen Wert ersetzen können. Außerdem lernen Sie, wie Sie einen Fehler abfangen und für Ihre eigene Logik nutzen können.

In diesem Fall ist das Ziel, eine neue Spalte Endsatz zu erstellen, die die Werte aus der Spalte Standardsatz verwendet. Bei Fehlern wird der Wert aus der entsprechenden Spalte Special Rate verwendet.

Bei der Fehlersuche einen Alternativwert angeben

In diesem Fall besteht das Ziel darin, eine neue Spalte Endsatz in der Beispieldatenquelle zu erstellen, die die Werte aus der Spalte Standardsatz verwendet. Bei Fehlern wird der Wert aus der entsprechenden Spalte Special Rate verwendet.

Um eine neue benutzerdefinierte Spalte zu erstellen, gehen Sie zum Menü Spalte hinzufügen und wählen Sie Benutzerdefinierte Spalte. Geben Sie im Fenster Benutzerdefinierte Spalte die Formel try [Standard Rate] otherwise [Special Rate] ein. Benennen Sie diese neue Spalte Endkurs.

Screenshot mit dem geöffneten Dialogfeld Benutzerdefinierte Spaltengruppe und einer in die benutzerdefinierte Spaltengruppe eingegebenen Formel Anderes versuchen.

Die obige Formel versucht, die Spalte Standardsatz auszuwerten und gibt ihren Wert aus, wenn keine Fehler gefunden werden. Wenn in der Spalte Standardtarif Fehler gefunden werden, wird der nach der Anweisung otherwise definierte Wert ausgegeben, in diesem Fall also die Spalte Sondertarif.

Nachdem Sie allen Spalten in der Tabelle die richtigen Datentypen hinzugefügt haben, zeigt das folgende Bild, wie die endgültige Tabelle aussieht.

Endgültige Tabelle Anders versuchen.

Hinweis

Alternativ können Sie auch die Formel try [Standard Rate] catch ()=> [Special Rate] eingeben, die der vorherigen Formel entspricht, aber das Schlüsselwort catch mit einer Funktion verwendet, die keine Parameter benötigt.

Das Schlüsselwort catch wurde im Mai 2022 in Power Query eingeführt.

Erstellen Sie Ihre eigene bedingte Fehlerlogik

Unter Verwendung der gleichen Beispieldatenquelle wie im vorigen Abschnitt besteht das neue Ziel darin, eine neue Spalte für den Endsatz zu erstellen. Wenn der Wert aus dem Standardtarif vorhanden ist, wird dieser Wert verwendet. Andernfalls wird der Wert aus der Spalte Special Rate verwendet, außer für die Zeilen mit einem #REF! Fehler.

Hinweis

Der einzige Zweck des Ausschlusses des #REF!-Fehlers ist zu Demonstrationszwecken. Mit den in diesem Artikel vorgestellten Konzepten können Sie beliebige Felder des Fehlerdatensatzes anvisieren.

Wenn Sie ein beliebiges Leerzeichen neben dem Fehlerwert auswählen, wird das Detailfenster am unteren Rand des Bildschirms angezeigt. Der Detailbereich enthält sowohl den Fehlergrund DataFormat.Error als auch die Fehlermeldung Invalid cell value '#REF!':

Screenshot des ausgewählten Fehlers mit einer Fehlermeldung am unteren Rand des Dialogs.

Sie können immer nur eine Zelle auswählen, so dass Sie immer nur die Fehlerkomponenten eines Fehlerwertes sehen können. An dieser Stelle erstellen Sie eine neue benutzerdefinierte Spalte und verwenden den Ausdruck try.

try mit benutzerdefinierter Logik verwenden

Um eine neue benutzerdefinierte Spalte zu erstellen, gehen Sie zum Menü Spalte hinzufügen und wählen Sie Benutzerdefinierte Spalte. Geben Sie im Fenster Benutzerdefinierte Spalte die Formel try [Standard Rate] ein. Benennen Sie diese neue Spalte Alle Fehler.

Screenshot mit dem geöffneten Dialogfeld Benutzerdefinierte Spaltengruppe und einer in die benutzerdefinierte Spaltengruppe eingegebenen Versuchsformel.

Der Ausdruck try wandelt Werte und Fehler in einen Datensatzwert um, der angibt, ob der Ausdruck try einen Fehler behandelt hat oder nicht, sowie den richtigen Wert oder den Fehlerdatensatz.

Aufgezeichnete Versuchsdatensätze.

Sie können diese neu erstellte Spalte mit Datensatzwerten erweitern und sich die verfügbaren Felder ansehen, indem Sie das Symbol neben der Spaltenüberschrift auswählen.

Screenshot der Spalte Alle Fehler mit dem hervorgehobenen Erweitern-Symbol und den ausgewählten Feldern HatFehler, Wert und Fehler.

Durch diesen Vorgang werden drei neue Felder aufgedeckt:

  • All Errors.HasError: Zeigt an, ob der Wert aus der Spalte Standard Rate einen Fehler hatte oder nicht.
  • Alle Fehler.Wert: Wenn der Wert aus der Spalte Standardsatz keinen Fehler hatte, wird in dieser Spalte der Wert aus der Spalte Standardsatz angezeigt. Für fehlerhafte Werte steht dieses Feld nicht zur Verfügung, und während des Erweiterungsvorgangs enthält diese Spalte null Werte.
  • All Errors.Error: Wenn der Wert aus der Spalte Standard Rate einen Fehler hatte, wird in dieser Spalte der Fehlerdatensatz für den Wert aus der Spalte Standard Rate angezeigt. Bei fehlerfreien Werten steht dieses Feld nicht zur Verfügung, und während des Erweiterungsvorgangs hat diese Spalte null Werte.

Screenshot der Tabelle mit den neuen Feldern in den Spalten, wobei ein Wert All.Errors.Error ausgewählt ist und die Fehlermeldungen am unteren Rand der Tabelle angezeigt werden.

Für weitere Untersuchungen können Sie die Spalte All Errors.Error erweitern, um die drei Komponenten des Fehlerdatensatzes zu erhalten:

  • Fehlerursache
  • Fehlermeldung
  • Fehler Detail

Nach dem Erweitern zeigt das Feld All Errors.Error.Message die spezifische Fehlermeldung an, die Ihnen genau sagt, welcher Excel-Fehler in der jeweiligen Zelle vorliegt. Die Fehlermeldung wird aus dem Feld Fehlermeldung des Fehlerdatensatzes abgeleitet.

Screenshot mit den angezeigten Fehlermeldungen.

Nun können Sie für jede Fehlermeldung in einer neuen Spalte eine neue bedingte Spalte mit dem Namen Endkurs und den folgenden Klauseln erstellen:

  • Wenn der Wert in der Spalte All Errors.Errors.Message gleich null ist, dann wird der Wert aus der Spalte Standard Rate ausgegeben.
  • Andernfalls, wenn der Wert in der Spalte All Errors.Errors.Message nicht gleich Invalid cell value '#REF!'. ist, wird der Wert aus der Spalte Special Rate ausgegeben.
  • Andernfalls, null.

Screenshot des Dialogs Bedingte Spalte hinzufügen mit allen für die neue Spalte festgelegten Fehlerbedingungen.

Nachdem Sie nur die Spalten Konto, Standardtarif, Sondertarif und Endtarif beibehalten und den richtigen Datentyp für jede Spalte hinzugefügt haben, zeigt das folgende Bild, wie die endgültige Tabelle aussieht.

Endgültige Tabelle mit Datentypen.

Verwendung von try und catch mit benutzerdefinierter Logik

Alternativ dazu können Sie auch eine neue benutzerdefinierte Spalte mit den Schlüsselwörtern try und catch erstellen.

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

Dialog für benutzerdefinierte Spaltengruppe mit einer neuen Formel, die den Ansatz der Try-and-Catch-Syntax veranschaulicht.

Weitere Ressourcen