Die möglichst wasserdichte Behandlung von Fehlern resultierend aus Formeln mit (temporär) ungültigen Argumenten gehört zu den Grunddisziplinen bei der Erstellung von excel-basierten Berichts- und Planungsmappen.
Insbesondere beim (umfangreichen) Einsatz von Cubeformeln bewährt sich die seit Excel 2007 zur Verfügung stehende "WENNFEHLER"-Formel. Vielen Dank an Eckhard Moos von der Kern AG für den Hinweis auf die Funktionsweise dieser sehr effizienten Funktion!
Zuerst machen wir einen Blick auf die unterschiedlichen Fehlertypen in Excel, diese können mit der "=Fehler.Typ()"-Formel folgendermaßen systematisiert werden:
- Typ 1: #Null! ... Schnittmenge von zwei Bereichen, die sich nicht überschneiden oder fehlerhafte Formelsyntax.
- Typ 2: #DIV/0! ... Division durch 0 oder durch leeren Wert.
- Typ 3: #Wert! ... Unzulässiges Argument für eine Formel - etwa Text statt Zahl.
- Typ 4: #Bezug! ... Zellen/Arbeitsblätter wurden gelöscht auf die sich die Formel bezieht.
- Typ 5: #Name? ... Benannter Bereich existiert nicht auf den sich eine Formel bezieht.
- Typ 6: #Zahl! ... Verwendung eines unzulässigen Zahlenarguments in einer Funktion.
- Typ 7: #NV ... Wert in einer Funktion wird nicht gefunden oder ist nicht verfügbar.
- Typ 8: #GETTING_DATA ... Temporärer Platzhaltertext einer Cubeformel während der Aktualisierung.
Zum leichteren Verständnis hier eine praktische Illustration der einzelnen Fehlertypen:
Hinweis I: für die Cubewert-Abfrage ist ein SQL Server Cube (hier: "FLEX-Reporting!") oder ein PowerPivot-Datenmodell Voraussetzung. Der Fehler.Typ 8 ist genau genommen kein Fehler sondern ein Status der während des Aktualisierungsvorganges der Cubeformel von Excel verwendet wird.
Hinweis II: die Anzeige von Rauten ("###########") ist keine Fehlermeldung sondern wird dann von Excel angewendet, wenn die Spaltenbreite zu gering ist, um das Ergebnis einer Formel anzuzeigen.
Nach dieser kurzen Systematisierung der Fehlertypen geht es um die eigentliche Fehlerbehandlung bzw. das Abfangen der Fehleranzeige durch eine der beiden folgenden Methoden:
- WENN(Prüfung;Dann_Wert;Sonst_Wert)-Formel
Die Wenn-Dann-Formel ist die klassische Fehlerabfangroutine. Der Vorteil ist die vertraute Funktionsweise, da es sich wohl um eine der meistverwendeten Formeln in Excel handelt. Der Nachteil dabei ist aber, daß diese bei performance-intensiven Abfragen weiter verlangsamend wirkt, da die Abfrage bis zu zwei mal pro Wenn-Dann-Formel ausgeführt werden muss (einmal im "Prüfung"-Argument und ein zweites Mal im "Dann"- oder "Sonst"-Argument, je nach Gestaltung der Formel). - WENNFEHLER(Wert; Wert_falls_Fehler)-Formel
Die Wennfehler-Formel steht seit Excel 2007 zur Verfügung und hat den großen Vorteil, daß diese nur aus zwei Argumenten besteht und daher gegenüber der klassischen Wenn-Dann-Formel sowohl performanter ausgeführt wird als auch bei Formeländerungen leichter zu warten ist.
Die Wennfehler-Formel ist insbesondere zur "Umklammerung" von Cubeformeln empfehlenswert, da die - meist umfangreiche - Cubeformel nur 1x und nicht wie bei der Wenn-Dann-Formel 2x angegeben und ausgeführt werden muß. Dazu behandelt die Wennfehler-Formel die wichtigen Fehlertypen 7 (= Knotenpunkt existiert nicht im Cube / PowerPivot Datenmodell) und 8 (= Status während der Aktualisierung).
Zur Verdeutlichung hier der praktische Einsatz der beiden Formeltypen:
Weitere hilfreiche Formeln in Zusammenhang mit der Fehlerbehandlung sind:
- ISTFEHL() ... Status "Wahr", wenn Fehler.Typ zwischen 1 und 6
- ISTFEHLER() ... Status "Wahr", wenn Fehler.Typ zwischen 1 und 7
- ISTTEXT() ... Status "Wahr", wenn der Inhalt einer Zelle Format "Text" hat
- ISTKTEXT() ... Status "Wahr", wenn der Inhalt einer Zelle nicht Format "Text" hat
- ISTZAHL() ... Status "Wahr", wenn der Inhalt einer Zelle Format "Zahl" hat
Nochmals vielen Dank an Eckhard Moos von der Kern AG für den Hinweis auf die Funktionsweise der WENNFEHLER-Formel!