IIF - Wenn Bedingung richtig anwenden
Um die vielseitigen Einsatzmöglichkeiten und die richtige Zusammensetzung der IIF - Wenn Bedingung anwenden zu können, haben wir Ihnen zahlreiche Beispiele aus der Praxis zusammengestellt. In dem ersten Block stellen wir Ihnen einfache Ausdrücke vor. Im zweiten Block geht es um sogenannte geschachtelte Ausdrücke und im letzten Block geht es um praxisnahe Standardfälle, wie z.B. das Arbeiten mit leeren Zellen oder Datumsfeldern.
In unserem Beispiel verwenden wir eine Tabelle mit einem Kundenstamm bestehend aus den Spalten Kundennummer als Primärschlüssel und den weiteren Spalten Postleitzahl, Umsatz, Kategorie und Potential.
Die IIF - Wenn Bedingung hat immer den gleichen Aufbau, hier die abstrakte Form: IIF(«bedingung», «wahr», «falsch»). Es wird eine Wenn- Bedingung gesetzt und im zweiten Teil des Ausdrucks die Dann-Parameter ausgeführt. Plakativ steckt nicht anderes in der IIF - Wenn Bedingung als: wenn es regnet (Bedingung), dann nehme ich einen Schirm mit (wahr), ansonsten setzte ich die Sonnenbrille auf (falsch). Folgen Sie also einfach den einzelnen Schritten der Wenn-Dann-Logik und Sie sollten weniger Probleme mit der Funktion haben.
Schauen wir uns dazu einige Beispiele an Hand unserer Tabelle an. Wenn Sie in dem Abfragedialog oder in dem Tabellenfenster auf fx klicken und eine Berechnete Spalte auswählen, dann finden Sie die IIF - Wenn Bedingung unter den Ausdruckskriterium Vergleich.
In diesem Abschnitt finden Sie einfache Ausdrücke für den Einstieg.
Beispiel Merkmale sollen zählbar sein
Im Kundenstamm ist die Kategorie pro Kunde ausgegeben. Jetzt sollen die A-, B-, und C-Kunden zählbar gemacht werden. Wir brauchen also 3 Spalten mit den entsprechenden Merkmalen, am besten eine 1 wenn es zutrifft und eine 0 wenn nicht, ausgegeben werden.
Wenn in der Spalte Kategorie ein A-Kunde steht (Bedingung), dann soll eine 1 (wahr) in der Zelle stehen, wenn nicht eine 0 (falsch) | IIF([Kategorie]= "A-Kunde", 1 , 0 ) |
Beispiel Kategorisierung mittels einer Datenspalte
Im Kundenstamm sollten A-Kunden an Hand eines Schwellenwertes definiert werden. In diesem Fall soll die Umsatzspalte dafür verwendet werden.
Wenn der Umsatz in der entsprechenden Spalte größer als 3.500 ist (Bedingung), dann soll A-Kunde (wahr) in der Zelle stehen, wenn nicht Ausbaukunden (falsch) | IIF([Umsatz]>3500, "A-Kunde" , "Ausbaukunde") |
Beispiel Wenn etwas zutrifft, dann soll der Inhalt einer anderen Spalte genutzt werden
Wenn eine Bedingung erfüllt wird, dann kann auch der Inhalt einer anderen Spalte ausgegeben werden. So kann relativ schnell auf die relevante Kategorien eine Auswahl getroffen werden, um diese anschließend weiterzuverarbeiten.
Wenn in der Spalte Kategorie ein A-Kunde steht (Bedingung), dann soll der Umsatz aus der Spalte Umsatz genommen werden (wahr), wenn nicht dann wird eine 0 gesetzt (falsch) | IIF([Kategorie]= "A-Kunde", [Umsatz], 0) |
Beispiel mehrere Kategorisierungen mittels einer Datenspalte
Kunden sollen mittels des Umsatzes in mehrere Kategorien aufgeteilt werden. Je nachdem wie viele Kategorien ich brauch muss ich entsprechende Ausdrücke hintereinander schachteln.
Wenn der Umsatz in der entsprechenden Spalte größer als 3.500 ist (Bedingung), dann soll A-Kunde (wahr) in der Zelle stehen, wenn der Umsatz größer als 2.000 ist (Bedingung), dann soll B-Kunde in der Zelle stehen (wahr), wenn beides nicht zutrifft, dann C-Kunde (falsch) | IIF([Umsatz]>=3.500,"A-Kunde", IIF([Umsatz]>=2.000,"B-Kunde","C-Kunde")) |
Beispiel unterschiedliche Merkmale werden aus mehreren Spalten gefüllt
Die Umsätze stehen für jede Kategorie in einer eigenen Spalte und sollen für weitere Berechnungen in eine einzelne Spalte geschrieben werden. Dies wäre das inhaltliche Gegenstück zum ersten Beispiel bei den einfachen Ausdrücken, wo alles aus einer Spalte in mehrere Spalten aufgeteilt wird. Auch in diesem Beispiel kann die Logik des vorherigen Beispiel angewandt werden und je nach Anzahl der Kriterien weiter verschachtelt werden.
Wenn in der Spalte Kategorie ein A-Kunde steht (Bedingung), dann soll der Umsatz aus der Spalte Umsatz A-Kunde genommen werden (wahr), wenn nicht dann wird der Umsatz aus der Spalte Umsatz B-Kunde genommen (falsch) | IIF([Kategorie]= "A-Kunde", [Umsatz A-Kunde], [Umsatz B-Kunde]) |
Neben den einfachen und geschachtelten Ausdrücken gibt es eine Reihe von Beispielen die zwar dem einen oder anderen Abschnitt zugewiesen werden können, aber von ihrer Bedeutung trotzdem separat aufgeführt werden sollten.
Beispiel Leere Zellen mit 0 auffüllen
Einzelne Zellen beim Umsatz weisen keine Werte auf und sollen zum weiteren Verarbeiten mit 0 aufgefüllt werden, damit die Spalten bei Berechnungen nicht ignoriert oder sogar falsche Ergebnisse liefert.
Wenn der Umsatz in der entsprechenden Spalte leer ist (Bedingung), dann soll 0.0 (wahr) in der Zelle stehen, ansonsten der Umsatz (falsch) |
IIF([Umsatz]==null, 0.0, [Umsatz]) |
Beispiele fürs Arbeiten mit Datumsfeldern
In dem ersten Beispiel wird ein Planungsbereich zwischen zwei Tagen definiert. Mit Datenfeldern kann man z.B. ermitteln, ob Kontakte in einem vorgegebenen Zeitraum stattgefunden haben.
Wenn der Besuchstag kleiner als 30 Tage und größer als 14 Tage ist (Bedingung), dann gib eine 1 (wahr) wieder, ansonsten eine 0 (falsch). |
Iff(DateDiff([Besuchstag],Datum, cTag)<30 und DateDiff([Besuchstag],Datum, cTag)>14; 1;0) |
In dem zweiten Beispiel wird ermittelt, ob der Besuchstag gleich dem Plantag ist. Je nach weiterem Gebrauch können bei diesen Beispielen Texte oder Zahlen ausgegeben werden.
Wenn die Spalte Besuchstag leer ist (Bedingung), dann soll "nicht stattgefunden" in der Zelle stehen (wahr), wenn im Besuchstag ein Datum steht (falsch), dann wird ein Vergleich zwischen den Spalten Besuchstag und Plan_Datum gemacht (Bedingung), mit dem Ergebnis "gleich" (wahr), wenn die Daten identisch sind und "ungleich" (falsch), wenn die Daten unterschiedlich sind |
IIF(IstNull([Besuchstag]), "nicht stattgefunden",IIF([Besuchstag]=[Plan_Datum], "gleich", "ungleich")) |
Beispiele der Qualitätsprüfung
Hier zwei Beispiel aus der Qualitätsprüfung, die mit geschachtelten Ausdrücken verarbeitet werden.
Hier ein Beispiel mit einem geschachtelter Vergleich.
Wenn in der Spalte Qualität ein Wert kleiner 0 steht (Bedingung), dann soll "zu wenig" (wahr) ausgegeben werden, wenn in der Spalte Qualität ein Wert größer 0 steht (Bedingung), dann soll "sehr gut" (wahr) ausgegeben werden, ansonsten "nicht gut" (falsch) |
IIF([Qualität]<0, "zu wenig" und IIF([Qualität]>0, "sehr gut", "nicht gut")) |
Ein weiteres Beispiel mit einem 3-fach geschachtelten Vergleich.
Wenn in der Spalte Qualität nicht enthalten ist (Bedingung), dann soll "passt" (wahr) ausgegeben werden, wenn in der Spalte Qualität ein Wert kleiner 0 steht (Bedingung), dann soll "zu wenig" ausgegeben werden (wahr), wenn in der Spalte Qualität ein Wert größer 0 steht (Bedingung), dann soll "sehr gut" ausgegeben werden (wahr), wenn nicht dann "nicht gut" (falsch) |
IIF(IstNull[Qualität], "passt", IIF([Qualität]<=0, "zu wenig", IIF([Qualität]>0, "sehr gut", "nicht gut"))) |
Beispiel Besuchstage festlegen
Zum Ausgeben von Besuchshäufigkeiten können auch IIF - Wenn Bedingung verwendet werden. Hier ist wieder ein geschachtelter Vergleich verwendet worden.
Wenn in der Spalte Besuche eine 0 steht (Bedingung), dann gebe "kein Besuch" aus (wahr), wenn in der Spalte Besuch ein Wert größer 1 steht (Bedingung), dann gebe "einmal" aus (wahr), wenn in der Spalte Besuch ein Wert größer 2 steht (Bedingung), dann gebe "zwei Besuche" aus (wahr), ansonsten gebe "mehrere Besuche" aus (falsch) |
IIF([Besuche]=0, "kein Besuch", IIF([Besuche]>=1, "einmal", IIF([Besuche]>2, "zwei Besuche", "mehr Besuche"))) |
Es kommt immer wieder vor, dass die perfekte IIF - Wenn Bedingung leider nicht ausgeführt werden kann, weil etwas in der Syntax nicht stimmt. Hier ist eine Auflistung häufiger Fehler:
-
Gerade bei geschachtelten Ausdrücken sollten die schließenden Klammern am Ende überprüft werden.
-
Nachkommastellen für Zahlenformate werden mit einem Punkt getrennt, nicht wie sonst üblich mit einem Komma
-
Unterschiedliche Datentypen können nicht verarbeitet werden. Wandeln Sie in diesem Fall die Datentypen auf einen gemeinsamen Datentyp um, dafür können Sie die Ausdrücke CText und CWert verwenden.
-
Wenn auf eine Spalte Bezug genommen wird, dann steht diese in eckigen Klammern.
-
Die einzelnen Teile des Ausdrucks werden durch Komma getrennt.