Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ähnlich wie Excel und die DAX-Sprache über eine IFERROR Funktion verfügen, verfügt Power Query über eine eigene Syntax zum Testen und Abfangen von Fehlern.
Wie im Artikel zum Umgang mit Fehlern in Power Query erwähnt, können Fehler entweder auf Schritt- oder Zellenebene angezeigt werden. In diesem Artikel wird erläutert, wie Sie Fehler basierend auf Ihrer eigenen spezifischen Logik erfassen und verwalten können.
Hinweis
Um dieses Konzept zu veranschaulichen, verwendet dieser Artikel eine Excel-Arbeitsmappe als Datenquelle. Die hier vorgestellten Konzepte gelten für alle Werte in Power Query und nicht nur die, die aus einer Excel-Arbeitsmappe stammen.
Die Beispieldatenquelle für diese Demonstration ist eine Excel-Arbeitsmappe mit der folgenden Tabelle.
Diese Tabelle aus einer Excel-Arbeitsmappe enthält Excel-Fehler wie #NULL!, #REF! und #DIV/0! in der Spalte Standardsatz. Wenn Sie diese Tabelle in den Power Query-Editor importieren, zeigt die folgende Abbildung, wie sie aussieht.
Beachten Sie, wie die Fehler aus der Excel-Arbeitsmappe mit dem [Error] Wert in den einzelnen Zellen angezeigt werden.
In diesem Artikel erfahren Sie, wie Sie einen Fehler durch einen anderen Wert ersetzen. Darüber hinaus erfahren Sie, wie Sie einen Fehler abfangen und für Ihre eigene spezifische Logik verwenden.
Bereitstellen eines alternativen Werts beim Auffinden von Fehlern
In diesem Fall besteht das Ziel darin, eine neue Spalte " Endgültige Rate " in der Beispieldatenquelle zu erstellen, die die Werte aus der Spalte " Standardsatz " verwendet. Wenn Fehler vorhanden sind, wird der Wert aus der entsprechenden Spalte "Sonderrate " verwendet.
Um eine neue benutzerdefinierte Spalte zu erstellen, wechseln Sie zum Menü "Spalte hinzufügen ", und wählen Sie "Benutzerdefinierte Spalte" aus. Geben Sie im Fenster "Benutzerdefinierte Spalte " die Formel try [Standard Rate] otherwise [Special Rate]ein. Nennen Sie diese neue Spalte "Endgültige Rate".
Diese Formel versucht, die Spalte " Standardrate " auszuwerten und gibt ihren Wert aus, wenn keine Fehler gefunden werden. Wenn Fehler in der Spalte " Standardrate " gefunden werden, ist die Ausgabe der nach der otherwise Anweisung definierte Wert, was in diesem Fall die Spalte "Sonderrate " ist.
Nachdem Sie allen Spalten in der Tabelle die richtigen Datentypen hinzugefügt haben, zeigt die folgende Abbildung, wie die endgültige Tabelle aussieht.
Hinweis
Alternativ können Sie auch die Formel try [Standard Rate] catch ()=> [Special Rate]eingeben, die der vorherigen Formel entspricht, aber das Catch-Schlüsselwort mit einer Funktion verwenden, die keine Parameter erfordert.
Das catch Schlüsselwort wurde im Mai 2022 in Power Query eingeführt.
Erstellen Sie Ihre eigene bedingte Fehlerlogik
Wenn Sie dieselbe Beispieldatenquelle wie im vorherigen Abschnitt verwenden, besteht das neue Ziel darin, eine neue Spalte für die endgültige Rate zu erstellen. Wenn der Wert aus dem Standardsatz existiert, wird dieser Wert verwendet. Andernfalls wird der Wert aus der Spalte "Sondersatz" verwendet, außer für die Zeilen, die einen #REF!-Fehler aufweisen.
Hinweis
Der einzige Zweck, den #REF! Fehler auszuschließen, dient zu Demonstrationszwecken. Mit den in diesem Artikel vorgestellten Konzepten können Sie alle Felder Ihrer Wahl aus dem Fehlerdatensatz ansprechen.
Wenn Sie einen Leerraum neben dem Fehlerwert auswählen, wird der Detailsbereich am unteren Rand des Bildschirms angezeigt. Der Detailbereich enthält sowohl den Fehlergrund, DataFormat.Errorals auch die Fehlermeldung: Invalid cell value '#REF!'
Sie können jeweils nur jeweils eine Zelle auswählen, sodass Sie die Fehlerkomponenten eines Fehlerwerts jeweils effektiv nur untersuchen können. An diesem Punkt erstellen Sie eine neue benutzerdefinierte Spalte und verwenden den try Ausdruck.
Verwenden Sie try mit benutzerdefinierter Logik
Um eine neue benutzerdefinierte Spalte zu erstellen, wechseln Sie zum Menü "Spalte hinzufügen ", und wählen Sie "Benutzerdefinierte Spalte" aus. Geben Sie im Fenster "Benutzerdefinierte Spalte " die Formel try [Standard Rate]ein. Benennen Sie diese neue Spalte "Alle Fehler".
Der try Ausdruck konvertiert Werte und Fehler in einen Datensatzwert, der angibt, ob der try Ausdruck einen Fehler behandelt hat oder nicht, und den richtigen Wert oder den Fehlerdatensatz.
Sie können diese neu erstellte Spalte mit Datensatzwerten erweitern und die verfügbaren Felder anzeigen, die erweitert werden sollen, indem Sie das Symbol neben der Spaltenüberschrift auswählen.
Dieser Vorgang macht drei neue Felder verfügbar:
- Alle Fehler.HasError – Zeigt an, ob der Wert aus der Spalte " Standardrate " einen Fehler aufweist oder nicht.
-
Alle Fehler.Wert – Wenn der Wert aus der Spalte " Standardsatz " keinen Fehler hatte, zeigt diese Spalte den Wert aus der Spalte " Standardsatz " an. Bei Werten mit Fehlern ist dieses Feld nicht verfügbar, und während des Erweiterungsvorgangs enthält
nulldiese Spalte Werte. -
Alle Fehler.Fehler – Wenn der Wert aus der Spalte Standardrate einen Fehler aufweist, zeigt diese Spalte den Fehlerdatensatz für den Wert aus der Spalte Standardrate an. Für Werte ohne Fehler ist dieses Feld nicht verfügbar, und während des Erweiterungsvorgangs weist diese Spalte Werte auf
null.
Zur weiteren Untersuchung können Sie die Spalte Alle Fehler.Fehler erweitern, um die drei Komponenten des Fehlereintrags abzurufen.
- Fehlerursache
- Fehlermeldung
- Fehlerdetails
Nach abschluss des Erweiterungsvorgangs zeigt das Feld "Alle Fehler.Error.Message" die spezifische Fehlermeldung an, die Ihnen genau angibt, über welchen Excel-Fehler jede Zelle verfügt. Die Fehlermeldung wird aus dem Feld "Fehlermeldung " des Fehlerdatensatzes abgeleitet.
Jetzt können Sie mit jeder Fehlermeldung in einer neuen Spalte eine neue bedingte Spalte mit dem Namen Final Rate und den folgenden Klauseln erstellen:
- Wenn der Wert in der Spalte "All Errors.Error.Message" gleich
nullist, dann ist die Ausgabe der Wert aus der Spalte "Standard Rate". - Andernfalls entspricht der Wert in der Spalte "Alle Fehler.Error.Message " nicht
Invalid cell value '#REF!'., dann ist die Ausgabe der Wert aus der Spalte "Sonderrate ". - Sonst, null.
Nachdem sie nur die Spalten "Konto", "Standardsatz", " Sondersatz" und " Endgültige Rate " beibehalten und den richtigen Datentyp für jede Spalte hinzugefügt haben, zeigt die folgende Abbildung, wie die endgültige Tabelle aussieht.
Verwenden try und catch mit benutzerdefinierter Logik
Alternativ 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