In den neuen Versionen von Excel haben schon diverse Formeln ein «Face-Lift» bekommen… so auch die WENN Formel (ab Excel 2019 und Excel 365).
Wollte man in der Vergangenheit mehrere WENN Abfragen durchführen, so musste man komplizierte verschachtelte WENN Abfragen erstellen. In Excel Foren und Kursen wurde dann unermüdlich erwähnt, dass man zwar bis zu 7 Level an Verschachtelungen erstellen konnte, aber dass das eine ganz schlechte Idee sei.
Neu kann man all dies getrost hinter sich lassen und anstelle von verschachtelten WENN Abfragen eine einzige WENNS Formel schreiben!
Syntax von WENNS
= Wenns ([Wahrheitstest1, Wert wenn Test1 wahr, [Wahrheitstest2], [Wert wenn Test2 wahr],…)
Wahreheitstest: Eine Abfrage die auf WAHR oder FALSCH auswertet
Wert wenn Test1 wahr: das was angezeigt oder berechnet werden soll
Ab dem 2. Wahrheitstest Parameter ist die Eingabe Optional. Man kann jedoch bis zu 127 Bedingungen Testen! Wohlgemerkt, wer mehr als 3 Bedingungen prüft, sollte wahrscheinlich nochmals nachsehen ob es Sinn macht wie er seine Arbeitsmappe aufgebaut hat.
Beispiel 1: WENNS Formel im Einsatz
Die erste Formel (1) zeigt, dass die WENNS Formel das Resultat (Wert wenn richtig) des ersten Wahrheitstest zurückgibt. Die
Die Formel wertet die späteren Bedingungen gar nicht aus! Das ist bemerkenswert! Bisher hat Excel eine Formel auf einem Arbeitsblatt immer ganz ausgewertet, selbst dann, wenn eine Bedingung gar nicht eingetroffen ist. Das war bis anhin nur in VBA möglich!
Im normalfall hätte die zweite Abfrage in dieser Formel nämlich ein #DIV/0! Fehler erzeugen müsssen, so wie es in der Zeile darunter auch geschieht wenn die Formel normal eingegeben wird!
Beispiel 2: Wenn kein Fehler zurückgegeben werden darf
Zuletzt bleibt nur noch zu klären was passiert, wenn alle Wahrheitstest FALSCH sind…
Wie die zweite Formel (2) zeigt, so bekommen wir einen #N/V Fehler, wenn keiner der Bedingungen zutrifft und auf WAHR evaluiert!
Dies ist in meinen Augen eine Verschlechterung gegenüber der alten WENN Formel. Wenn nichts zutrifft sollte es FALSCH sein!
TIPP:
Soll kein Fehlerwert zurückgeben werden, so kann man als die letzte Abfrage einen Wahrheit-Test einbauen, der immer auf Wahr lautet (z.B. 1=1 oder «Hat meine Frau Recht?»)
Müsste in der Syntags von Wenns nicht eben wenns anstelle von wenn stehen?
Ja das müsste es natürlich! Schreibfehler. Jetzt korrigiert. Danke für den Hinweis Paul!
Du schreibst:
Die Formel wertet die späteren Bedingungen gar nicht aus! Das ist bemerkenswert! Bisher hat Excel eine Formel auf einem Arbeitsblatt immer ganz ausgewertet, selbst dann, wenn eine Bedingung gar nicht eingetroffen ist. Das war bis anhin nur in VBA möglich!
Ich sehe da jetzt keinen Unterschied, auch die normale verschachtelte WENN-Funktion wird nur soweit ausgewertet, wie nötig. Die Formel: =WENN(1=1;”STIMMT”;WENN(1/0;”NICHT RICHTIG”;””)) liefert das selbe Ergebnis, da die zweite WENN nicht ausgewertet wird. Auch wenn es immer heißt: von innen nach außen auflösen, macht das Excel aber nicht wirklich. Daher kein Problem.
Statt 1=1 kann ich auch direkt WAHR (bzw. einfach 1 oder jede andere Zahl, die ungleich 0 ist) eingeben
Ich habe die Kombinatino vor dem erstellen des Beitrags speziell nochmals getestet. Beim erneuten testen sehe ich aber das Du recht hast. Möglicherweise war dies in einer früheren Verison so, möchte mir aber hier nicht weiter aus dem Fenster lehnen. Werde dem noch nachgehen… Danke für den Hinweis!
Du bist Dich fleissig am durchlesen meiner Beiträge. Cool.
Darf ich fragen was Du Beruflich machst?
Ich arbeite derzeit hauptsächlich als EDV-Lehrer.
Ich kann es auch nicht prüfen, es würde mich aber wundern, wenn es in früheren Versionen anders gewesen ist.
Technisch kann es eigentlich nicht anders ablaufen, als in einer Programmiersprache. Auch wenn bei der Formelauswertung in Excel der Anschein erweckt wird, dass von innen nach außen die Auswertung erfolgt, so dürfte es im technischen Sinne nicht so sein, sondern:
Es wird die äußere Funktion aufgerufen, wenn diese Ihre Arbeit nicht direkt nachgehen kann, da weitere Unterfunktionen eingetragen sind, ruft die übergeordnete Funktion die andere Funktion auf (“und bittet um Hilfe”). Das geht so lange weiter, bis eine Funktion alle für sie relevante Werte zur Verfügung hat und sich voll ausgeführt werden kann. Das Ergebnis wird dann der übergeordneten Funktion zurückgegeben usw. bis zur äußersten Funktion.
Die Wenn-Funktion wird also nur so lange Unterfunktionen aufrufen oder eben Auswertungen machen, bis ein Wahrheitswert erzeugt wurde, dann wird nur noch der entsprechende “Dann”-Bereich ausgeführt, andere Dann-Bereiche oder der Sonst-Bereich bleibt ohne Ausführung.
Alles andere würde auch aus “Performance-Gründen” wenig Sinn machen.