Seite 1 von 1

[gelöst] Wie kann Fehlermeldung bei Finden umgangen werden?

Verfasst: Fr 27. Nov 2020, 22:23
von pschulze59
Hallo Forum,

ich verwende folgende Funktion:

Code: Alles auswählen

=WENN(FINDEN("PL";C2);"Plauen";WENN(FINDEN("DD";C2);"Dresden";WENN(FINDEN("MD";C2);"Magdeburg";WENN(FINDEN("MHL";C2);"Mühlhausen";WENN(FINDEN("EF";C2);"Erfurt";"alle BZ")))))
Je nach Kürzel im String von C2, der an beliebiger Stelle steht und eindeutig ist, soll der Klarname des Standorts angezeigt werden. Aber bereits nach der Prüfung des ersten Wertes "PL" wird bei Nichtauffinden "#WERT!" angezeigt. Die Ursache ist wohl, dass FINDEN() den Fehlerwert generiert, sobald "PL" nicht enthalten ist - damit wird nicht mehr die nächste WENN-Funktion ausgewertet - vermutlich weil das Ergebnis vom ersten WENN Fehler ergibt. Das finde ich aber so nicht in Ordnung, denn wenn eine Bedingung nicht erfüllt ist, muss automatisch die nächste Bedingung des nächsten WENN geprüft werden.
Das Gleiche passiert auch mit SUCHEN().

Wie kann ich mein Problem trotzdem lösen?

Peter

Re: Wie kann Fehlermeldung bei Finden umgangen werden?

Verfasst: Sa 28. Nov 2020, 08:00
von Mondblatt24
Hallo,
da FINDEN() eine Zahl zurückgibt (Position des Treffers), fehlt ISTZAHL() (gibt WAHR oder FALSCH zurück) in der Formel.

=WENN(ISTZAHL(FINDEN("PL";C2));"Plauen"; usw.

Gruß
Peter

Re: Wie kann Fehlermeldung bei Finden umgangen werden?

Verfasst: Sa 28. Nov 2020, 10:07
von Helmut_S
Hallo, etwas kürzer könnte die Formel werden mit wenns()

Code: Alles auswählen

=WENNS(C2="PL";"Plauen";C2="DD";"Dresden";C2="MD";"Magdeburg";C2="MHL";"Mühlhausen";C2="EF";"Erfurt";1=1;"alle BZ")
Gruß Helmut

Re: Wie kann Fehlermeldung bei Finden umgangen werden?

Verfasst: Sa 28. Nov 2020, 10:11
von Mondblatt24
Hallo Helmut,
lies die Frage noch einmal durch.

Gruß
Peter

Re: Wie kann Fehlermeldung bei Finden umgangen werden?

Verfasst: Sa 28. Nov 2020, 10:24
von mikele
Hallo,
falls die Liste der Orte größer werden sollte, bietet sich eine Variante an.
Anbei mal ein Votschlag. Auf dem Tabellenblatt "Liste" findest du die Ortsübersicht. Den beiden Bereiche habe ich einen Namen gegeben, damit die Formel in Tabelle1 B1 einfacher wird. Es ist eine Matrixformel, die mit Shift+Strg+Enter abgeschlossen werden muss.

Code: Alles auswählen

=INDEX(orte;MAX(NICHT(ISTFEHLER(SUCHEN(kurz;A1)))*(ZEILE(kurz))))

Re: Wie kann Fehlermeldung bei Finden umgangen werden?

Verfasst: Sa 28. Nov 2020, 22:14
von pschulze59
Also Leute, erst einmal vielen Dank an alle, die sich darüber Gedanken gemacht haben - ich finde diese Forum einfach toll - das zeigt wie clever kollektive Intelligenz sein kann.

Ich werde die Methode von Peter benutzen (also nicht meine - bin ja selbst ein Peter :D ).
Die Methode funktioniert und passt zu meiner Aufgabenstellung.

Die Methode von Mikele muss ich erst mal in Ruhe durchdenken, aber das muss ich morgen machen, weil ich heute schon mind. ein Bier zu viel intus habe. :lol: Außerdem passt sie nicht ganz zu meiner Problematik, da ich ja keine Extra-Tabelle dafür machen will.

Dennoch habe ich Diskussionsbedarf - allerdings wird es jetzt polemisch:
Meine Auffassung von WENN ist: Wenn eine Bedingung erfüllt ist, MACHE das Eine und SONST das Nächste. Das Nächste ist dann das nächste WENN. Da sind wir uns wohl einig.

Wenn FINDEN() nach Prüfung der Bedingung1 unwahr ist (kein Zahlenwert wird zurückgeliefert), und damit unwahr und somit falsch ist, ist die Bedingung1 nicht erfüllt. Also muss nach meinem Verständnis das passieren, was unter SONST steht - in meinem Fall das nächste WENN. Aber das nächste WENN wird nicht mehr ausgewertet, weil das WENN einfach abgebrochen wurde, weil der Rückgabewert eines Fehlers sofort zum Abbruch der Funktion führt.
Das entspricht nicht meiner Denkweise, denn die Bedingung1 wurde nicht erfüllt, dann muss das unter SONST Stehende ausgeführt werden. Stattdessen gibt es einen Abbruch. Eine "Absicherung" mit ISTZAHL() wäre nach meinem Verständnis gar nicht nötig, weil ja die Prüfung von Bedingung1 ein FALSCH() ergibt - stattdessen ergibt die Prüfung von Bedingung1 ein FEHLER() - Und das ist das Problem:
FINDEN() dürfte nicht FEHLER(), sondern FALSCH() liefern - schließlich ist es kein "Fehler", wenn ein Zeichen in einem String nicht vorkommt, sondern es ist nicht wahr, also FALSCH().

Okay, Polemik hilft für den Moment nicht weiter. Ich habe eine Lösung, auch wenn sie meinem Verständnis der Logik von WENN() oder eigentlich von FINDEN() nicht entspricht. Ich habe eine Lösung - vielen Dank dafür!

Peter