Die Logik-Funktion WENN()
Beschreibung
Die Funktion WENN() gehört neben SUMME() wohl zu den meist genutzten Funktionen in Excel. Auch wenn es für Einsteiger nicht leicht ist, es lohnt sich wirklich, sich zumindest mit den grundlegenden Dingen auseinanderzusetzen. Und schon gleich hier zu Beginn der Hinweis, dass es auch hier Alternativen gibt, wenn die Formel droht, undurchschaubar zu werden. Das geht dann beispielsweise in die allgemeine Richtung VERWEIS().
Syntax
=WENN(Bedingung; DannWert; SonstWert)
Argument(e)
Das Argument Bedingung muss eingegeben werden. Es muss ein Ausdruck sein, der ausgewertet werden kann und als Ergebnis den Wahrheitswert WAHR oder FALSCH ergibt. Dazu werden normalerweise Vergleichsoperatoren wie =, <, > <> eingesetzt. Prinzipiell kann alles verglichen werden, so ist logischerweise die Formulierung
="Himmel" <> "Hölle"
selbstverständlich wahr, denn es sind ja zwei vollkommen verschiedene Zeichenketten.
Der DannWert beschreibt, welches Ergebnis die Funktion zurück gibt, falls die Auswertung der Bedingung WAHR ist. Dieses Argument ist ebenfalls zwingend erforderlich. Es kann sich hierbei um einen beliebigen Wert handeln, in Grenzen auch um eine Anweisung (allerdings nicht wirklich empfehlenswert).
Der SonstWert sollte immer angegeben werden, es kommt andernfalls unter Umständen zu irritierenden Funktionsergebnissen. Hier wird der Rückgabewert beschrieben, der in dem Fall genutzt wird, wenn der DannWert nicht zutrifft. Und da der Computer (noch) ausschließlich die beiden Zustände Ja und Nein, sprich 1 und 0 kennt, gibt es keine andere Möglichkeit.
Hier schon einmal der Hinweis: Durch Verschachtelung des WENN() lässt sich auf Umwegen doch noch etwas mehr als dieses reine schwarz/weiß erreichen.
Beispiele
In dieser Datei, Register Wenn() finden Sie (teilweise demnächst) die folgenden Beispiele und noch einiges mehr zu dieser Funktion. Die Beschreibungen in dem Tabellenblatt sind aber kürzer gefasst als hier, dafür aber vielleicht informativer und tiefer gehender.
Bedenken Sie bei diesen hier aufgeführten Text-Beispielen immer, dass die WENN() – Funktion immer in jener Zelle steht, wo das Ergebnis dieser Funktion ausgegeben wird. Der Übersichtlichkeit halber und der besseren Lesbarkeit wegen verwende ich relativ viele Leerzeichen in der Formel. Sie können diese genau so eingeben oder auch weglassen. Im schlimmsten Fall wird Excel die Formel an einer fehlerhaften Stelle in der Eingabezeile markieren.
=WENN(7 < 10; "kleiner"; 55)
Interpretation: Wenn 7 kleiner ist als 10, dann gebe den Text kleiner zurück, sonst schreibe die Zahl 55 in die Zelle, wo die Funktion drin steht. Es ist klar, dass hier der Text zurück gegeben wird, denn 7 ist kleiner als 10.
=WENN(7 < 7; "kleiner"; 55)
Interpretation: Wenn 7 kleiner ist als 7, dann gebe den Text kleiner zurück, sonst die Zahl 55. Das Ergebnis muss natürlich 55 sein, denn 7 ist zwar = 7 aber nicht kleiner.
=WENN(7 < A1; "kleiner"; 55)
Interpretation: Wenn die Zahl 7 (also der Wert) kleiner ist, als der Wert in Zelle A1, dann wird in der Ziel-Zelle der Text kleiner ausgegeben, sonst der Wert (die Zahl) 55.
=WENN("1.1.2000" < "01.02.2000"; "A"; "B")
Interpretation: Wenn "
1.1.2000"
kleiner ist als "
01.02.2000"
… Spontan würde ich sagen, dass hier als Ergebnis A heraus kommt, denn der Wert des 1. Januar 2000 ist nun einmal kleiner als der des ersten Februar des gleichen Jahres.
Aber Excel hat da so seine eigene Logik. Es handelt sich bei diesem Vergleich um 2 Texte und da gilt, dass Zeichen für Zeichen nacheinander verglichen wird. Und gleich beim ersten Zeichen wird klar, dass die "
1"
(Text, nicht Zahl) nun einmal nicht kleiner ist als der Text "
0"
. Das ist der Grund, warum B als Ergebnis heraus kommt.
Bleiben wir bei dem Beispiel. Und um es etwas realitätsnaher zu gestalten sage ich, dass in A1 der Text "
1.1.2000"
steht und in A2 ist es auch der Text "
01.02.2000"
, an den Anführungszeichen erkennen Sie, dass es sich hier auch um Text handelt und wegen der Gänsefüßchen bewertet Excel die Zellen auch als Text. – Ich möchte nun erreichen, dass Excel die beiden Zellinhalte so interpretiert, wie es Menschen tun. Also als kalendarisches Datum. Dann sähe die Funktion vor der Korrektur so aus:
=WENN(A1 < A2; "A"; "B")
… was natürlich wieder das fehlerhafte Ergebnis B bringen würde. Im Grunde genommen habe ich ja nur die absoluten Werte in der Funktion durch einen Zellbezug ersetzt. Zielführend ist hier folgende Kombination:
=WENN(DATWERT(A1) < DATWERT(A2); "A"; "B")
Das klappt dann auch so wie gedacht, weil die Funktion DATWERT() den Datumstext in eine Zahl umwandelt, die Excel als „echtes” Datum interpretieren kann und auch wird. Sie erkennen, dass sich prinzipiell Funktionen auch gut verschachteln lassen.
Apropos Datum, hier ein letztes Beispiel, wie es in dieser Art nicht nur in Sachen Datum gebraucht wird. Die Aufgabe scheint ganz einfach: Zu einem beliebigen Datum soll das Quartal ausgegeben werden. Also: 1. Quartal, 2. Quartal, … Das hört sich einfach an, ist es aber nicht in Wirklichkeit. Denn hier kommt die oben bereits angesprochene Verschachtelung der WENN()-Funktionen zum tragen, und bei 4 Quartalen ist das schon recht aufwendig.
Hier im Text-Teil (den Sie gerade lesen) beschränke ich mich auf zwei Termine, die jeweils im ersten und zweiten Halbjahr liegen. Es soll geprüft werden, ob ein bestimmtes Datum auf einen der beiden Termine fällt. In der Datei logik.xlsx Register Wenn() ist auch die recht umfangreiche Funktion für die vier Quartale vorgestellt. Trotz der Beschränkung hier im Text ist die Logik die gleiche. Und (nur) drei Möglichkeiten sind einfach übersichtlicher als vier oder mehr. Sie sind über die „drei Möglichkeiten” irritiert? Sie meinen, es seien doch nur zwei? Es sind drei:
- Termin 1 trifft zu,
- Termin 2 trifft zu,
- keiner der beiden Termine ist zutreffend, weil nicht im aktuellen Jahr.
Oder um zum besseren Verständnis ein anderes Beispiel zu nehmen, welches vielleicht praxisnäher ist: Manche Paketdienste verwenden die Einheit „Gurtmaß” als Grundlage für den Preis. Die Berechnung ist beispielsweise „Längste Seite + kürzeste Seite in cm”. Da gibt es dann die drei Gruppen „S‑Paket” (small), „M‑Paket” (medium) und „L‑Paket” (large) .. (und noch weitere). Das sind echte Bezeichnungen eines großen deutschen Paketdienstes, der lieber englische Begriffe verwendet. Auch dazu finden Sie auf dem Arbeitsblatt ein Beispiel.
Wieder zurück zum Thema Datum/Quartal. Die folgenden Anweisungen beschreiben den Weg, wie Sie auch als Anfänger zum Ziel gelangen, und zwar Schritt für Schritt. Wollen Sie gleich das Ergebnis für die Halbjahrestermin-Formel sehen, dann genügt ein Klick hier.
In A1 steht der Termin für das erste Halbjahr, in A2 der für das zweite Halbjahr. Und in A3 das auszuwertende Datum, welches gegen die beiden anderen kalendarischen Daten abgeglichen, referenziert werden soll.. Alle 3 Zellen enthalten ein gültiges Datum, welches nicht umgewandelt werden muss. In beispielsweise A4 kommt dann die endgültige Formel/Funktion.
Auch wenn das eine oder andere für Sie nun vielleicht verwirrend erscheint, es ist dann letztendlich doch schlüssig. Und solange Sie nicht wirklich fit sind in Sachen Formel-Verschachtelungen, sollten Sie den hier aufgezeigten Umweg gehen. Bei sehr komplexen Verschachtelungen mache ich das auch heute noch so. – Folgende Logik ist hier in genau dieser Reihenfolge zielführend:
- Ist A3 = A1?
- Ja, dann Rückgabe „Termin 1. Halbjahr”
- Nein, dann weiter zu 2.
- Ist A3 = A2?
- Ja, dann Rückgabe „Termin 2. Halbjahr”
- Nein, dann Rückgabe „Kein Termin”
Um das zu realisieren, gehen Sie erst einmal in eine beliebige, freie Zelle. Ich wähle hier B1. Dort schreibe ich folgende Formel hinein:
=A3=A1
und in B2 kommt die Formel
=A3=A2
Das Ergebnis ist dann jeweils ein WAHR oder ein FALSCH. Damit habe ich dann erst überhaupt einmal die Kontrolle, ob einer der beiden Termine mit dem Vergleichs-Wert in A3 übereinstimmt oder nicht. Zugegeben, dieses werden Sie nicht unbedingt immer durchführen, aber manchmal kann es hilfreich sein. Schauen Sie sich einmal das Beispiel in der folgenden Abbildung an:
Der besseren Erkennbarkeit wegen habe ich A1 gelb markiert, weil es ja um die Zelle geht. Und sie ist auch im Endeffekt der Übeltäter. Aber warum behauptet Excel, dass die Werte nicht identisch sind? Ein Klick in A1 zeigt, woran es liegt:
In A3 steht nur das Datum ohne Zeitangabe, also im Prinzip 0:00h. Das Zahlen-Format beider Zellen ist identisch auf „TT.MM.JJJJ” eingestellt, wodurch die Uhrzeit nicht angezeigt wird. Dadurch sieht es so aus, dass A1 und A3 die gleichen Werte beinhalten (was aber nicht der Fall ist). Solche „Kleinigkeiten” können einen schon zur Verzweiflung treiben, wenn „man” nicht an solche Fehlermöglichkeiten denkt.
Okay, die eben durchgeführte Kontrolle zeigt also eine der zwei Möglichkeiten auf. Aber das war ja nur die Kür, nun kommt die Pflicht. Erst einmal korrigiere ich in A1 das Datum auf das reine Datum ohne Uhrzeit, um ein solide Basis zu haben. Sofort wird sich in B1 der Wert auf WAHR ändern, denn nun sind die Inhalte der beiden verglichenen Zellen tatsächlich gleich. Ich schreibe nun beispielsweise in C1 erst einmal folgende Formel, um das Datum mit den ersten Halbjahr abzugleichen:
=WENN(A3 = A1; "Termin 1. Halbjahr"; "XXX")
und in C2 kommt fast die gleiche Formel:
=WENN(A3 = A2; "Termin 2. Halbjahr"; "XXX")
Das Ergebnis würde nun so aussehen:
Hinweis: Mir ist bewusst, dass mit dieser Formulierung keineswegs berechnet wird, ob das entsprechende Datum im ersten oder zweiten Halbjahr liegt. Es geht hier ganz klar nur um das Prinzip der Formeln! Stellen Sie sich aber einfach einmal vor, dass in A3 das einzig mögliche Datum im ersten Halbjahr vermerkt ist. Sprich: Nur wenn das in A1 eingegebene Datum mit dem Wert aus A3 übereinstimmt (also der 17.04.2014 ist), soll Termin 1. Halbjahr ausgegeben werden, sonst der alternative Wert XXX.
Machen Sie sich nun einmal beide Formeln in C1 und C2 unabhängig voneinander bewusst. Es sind zwei eigenständige WENN()-Funktionen, die jede für sich ein korrektes Ergebnis zurück geben.
Ich beginne einmal mit der zweiten Formel (C2), sie ist leichter zu ändern und auch nachzuvollziehen. Da steht doch drin: Wenn das Datum in A2 gleich dem Datum in A3 ist, dann ist das Funktionsergebnis Termin 2. Halbjahr, sonst soll das Ergebnis XXX sein. Na ja, der Sonst-Teil gibt ja nicht wirklich ein vielsagendes Ergebnis zurück. Und richtig, die Aufgabe war ja, dass dann Kein Termin zurück gegeben wird. Das ändern wir nun einmal:
=WENN(A1=A2; "Termin 2. Halbjahr"; "Kein Termin")
Und schon ist die zweite Formel komplett. Sie braucht nicht geändert zu werden. Aber sie steht ja auch noch ganz alleine da, ohne eine Verknüpfung mit der ersten Formel. Und die betrachten wir uns jetzt. – Wie bereits beschreiben, kann in einer WENN()-Funktion nur das DANN oder das SONST zurück geben. Im obigen Beispiel trifft ja der DANN – Teil zu und es wurde der korrekte Text zurück geliefert. Wenn ich jetzt aber in A3 ein anderes Datum eintrage, wird XXX in die Zelle eingetragen. Eigentlich müsste dort die zweite Formel stehen, um zum gewünschten Ergebnis zu kommen, denn in C2 steht nun je nach Situation Termin 2. Halbjahr oder Kein Termin.
Sie haben bei der zuerst diskutierten Formel für den SONST – Teil gewiss erkannt, dass das "XXX" ein vorübergehender Platzhalter ist. Das ist natürlich auch hier der Fall. Dieser Platzhalter wird ganz einfach durch die Kern-Formel aus C2 ersetzt. Als Kern-Formel bezeichne ich die komplette Formel ohne das einleitende Gleichheitszeichen. Gehen Sie nun am besten so vor:
- Markieren Sie in der Bearbeitungszeile die Formel ohne das führende Gleichheitszeichen
- StrgC (entspricht Kopieren)
- Esc – Taste
- Klicken Sie auf C1 und markieren Sie nun in der Bearbeitungszeile nur denn SONST – Teil, also
"
XXX"
(einschließlich der Anführungszeichen). - StrgV (entspricht Einfügen), um die Markierung zu überschreiben.
- Mit der Eingabetaste (Enter, Return) den Vorgang abschließen.
Damit wird das bisher definierte Ziell etwas umdefiniert: In A3 und A2 stehen die festen kalendarischen Daten für das entsprechende Halbjahr und verglichen wird nur der Wert in A1. Jetzt sollte eine visuelle Prüfung ergeben, dass in C1 in jedem Fall das korrekte, das gewünschte Ergebnis steht. Die Formel sieht nun so aus:
=WENN(A1=A3; "Termin 1. Halbjahr"; WENN(A1=A2; "Termin 2. Halbjahr"; "Kein Termin"))
Auch wenn auf Ihrem Bildschirm mehrere Zeilen für die Formel genutzt werden, die gehört in Excel in eine einzige Zeile. Bei einem kleinen Fenster oder entsprechend niedriger Auflösung ist es aber durchaus möglich, dass Excel Ihnen die Formel auch in mehreren Zeile anzeigt, obwohl es aus der Logik-Sicht des Programms eine einzige Zeile ist.
Da nun ja fast alles wie gewünscht da steht, muss die Formel noch in die Zelle A4 verschoben werden, weil dieses ja das Ergebnis der Funktion(en) enthalten soll. Ein einfaches c&p oder ziehen mit der Maus wird nicht unbedingt zum gewünschten Erfolg führen. Okay ich gebe zu, dass in den neueren Versionen mehr möglich ist als in den älteren. Das verschieben haut da prinzipiell gut hin. Aber mit copy and paste fallen Sie in jedem Fall auf die Nase, weil da ja die Adressen automatisch angepasst werden und Sie erhalten die Fehlermeldung #BEZUG!. Mein Vorgehen in diesen Fällen: Ich kopiere die Kern-Formel, genau so wie eben auch beim einfügen der zweiten Formel in die erste. Dann klicke ich in A4, schreibe ein Gleichheitszeichen und füge dann mit StrgV den vorher kopierten Inhalt der Zwischenablage ein und schon passt alles.
So, und an dieser Stelle noch ein dezenter Hinweis: In Excel-Versionen ab 2007 sind Verschachtelungen bis fast unendlich möglich. Wenn Sie der Herr der Dinge sein wollen und für Sie die Übersicht wichtiger ist als irgendwelche intransparente Funktionsmonster, dann suchen Sie andere Wege zum Ziel. Denn ich traue mir nicht zu, nach einem halben Jahr eine WENN-Funktion mit zehn oder mehr Verschachtelungen in ertragbarer Zeit zu analysieren und eventuell veränderten Gegebenheiten anzupassen.
Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?
Dann würde ich mich über einen Beitrag Ihrerseits z.B. 1,50 € freuen … (← Klick mich!)