Ein Blick auf verschachtelte IF-Anweisungen und Alternativen, die später einfacher zu erstellen und zu verstehen sind.
von David Goodmanson
In meinem letzten Artikel habe ich mir eine einfache Excel-IF-Anweisung sowie deren Anweisungen angesehen nützliche Cousins CountIf und SumIF. Ich habe auch die verschachtelte IF-Anweisung angesprochen, in der sich viele IF-Funktionen in einer Zelle befinden.
Dieses Mal werden wir uns die verschachtelte IF genauer ansehen und insbesondere Alternativen später einfacher zu erstellen und zu verstehen.
Im Folgenden werden einige alternative Möglichkeiten zur Verwendung der IF-Anweisung in einem VBA-Code (Visual Basic für Applikationen) sowie der Select Case-Anweisung beschrieben.
Die Bewertungsnummer in Spalte B wird in Spalte C in eine Textbeschreibung umgewandelt. In Excel gibt es verschiedene Möglichkeiten In einem einfachen Beispiel wie diesem reicht eine verschachtelte IF aus, es gibt jedoch auch andere Optionen, die a Es ist für andere leichter zu lesen.
Niemand macht sich jemals daran, eine lange Gruppe verschachtelter IFs zu erstellen. Es schleicht sich normalerweise mit der Zeit an alle heran. Eine einfache verschachtelte IF mit 2 oder 3 Optionen kann mit immer mehr IFs so weit wachsen, dass sie nicht mehr lesbar und anfällig für Codierungsfehler ist. Hier ist eine ‚einfache‘ verschachtelte IF mit 40 Ebenen:
=IF(A2="A",TRUE,IF(A2="B",TRUE,IF(A2="C",TRUE,IF(A2="D",TRUE,
IF(A2="E",TRUE,IF(A2="F",TRUE,IF(A2="G",TRUE,IF(A2="H",TRUE,
IF(A2="I",TRUE,IF(A2="J",TRUE,IF(A2="K",TRUE,IF(A2="L",TRUE,
IF(A2="M",TRUE,IF(A2="N",TRUE,IF(A2="O",TRUE,IF(A2="P",TRUE,
IF(A2="Q",TRUE,IF(A2="R",TRUE,IF(A2="S",TRUE,IF(A2="T",TRUE,
IF(A2="U",TRUE,IF(A2="V",TRUE,IF(A2="W",TRUE,IF(A2="X",TRUE,
IF(A2="Y",TRUE,IF(A2="Z",TRUE,IF(A2="AA",TRUE,IF(A2="AB",TRUE,
IF(A2="AC",TRUE,IF(A2="AD",TRUE,IF(A2="AE",TRUE,IF(A2="AF",TRUE,
IF(A2="AG",TRUE,IF(A2="AH",TRUE,IF(A2="AI",TRUE,
IF(A2="AJ",TRUE,IF(A2="AK",TRUE,IF(A2="AL",TRUE,IF(A2="AM",TRUE,
IF(A2="AN",TRUE,FALSE))))))))))))))))))))))))))))))))))))))))
In Excel 2007 können Sie 64 verschachtelte IFs in einer Formel haben, aber viel Glück beim Debuggen einer solchen Zeile! Verschachtelte IFs sind in neueren Excel-Versionen mit Formelfarbcodierung usw. etwas einfacher zu steuern. Trotz dieser Hilfsmittel werden stark verschachtelte IFs am besten vermieden.
Wenn Sie der Meinung sind, dass Ihre verschachtelten Optionen später möglicherweise erweitert werden, ziehen Sie dies in Betracht eine der Alternativen von Anfang an.
Verschachtelte IF
Zunächst wird für die Funktionen der verschachtelten IF die Formel für Zelle C3 unten gezeigt.
=IF(B3=5, "Boom", IF(B3=4, "Recovery", IF(B3=3, "Turning Point",
IF(B3=2, "Recession", IF(B3=1, "Depression")))))
Die verschachtelte IF arbeitet von links nach rechts und wertet den logischen Test aus, z B3 = 5, wenn diese Bewertung wahr ist, fügt IF den Text „Boom“ ein. Wenn B3 nicht gleich 5 ist, betrachtet IF den nächsten logischen Test (B3 = 4) und wertet jeden Schritt nacheinander aus.
- IF wertet jeden Test weiter aus, bis der logische Test erfüllt ist, und beendet dann die Funktion.
- Das Gleichheitszeichen links von der ersten IF wird danach nur einmal für diese erste IF benötigt Für jede Verschachtelungsebene geben wir einfach den Text IF ein. (Dies gilt für alle verschachtelten Arbeitsblattfunktionen.)
- Die Anzahl der offenen Klammern „(“ muss mit der Anzahl der schließenden Klammern übereinstimmen „)“. Im obigen Formelbeispiel gibt es 5 offene Klammern, die am Ende mit 5 schließenden Klammern übereinstimmen. Neuere Versionen von Excel verfügen über bessere Funktionen zur Farb- und Fehlerprüfung, um die Klammern und Anführungszeichen gerade zu halten, aber auch verschachtelte IFs können es sein Ein Problem beim Ausarbeiten.
Nachschlagetabelle
Eine Möglichkeit, die Komplexität der verschachtelten IF zu umgehen, besteht darin, VLOOKUP zu verwenden, das mit einer anderen Referenztabelle verknüpft ist wo im Arbeitsblatt.
Unsere Tabelle würde folgendermaßen aussehen:
Die Funktion in Spalte C. Die ursprüngliche Tabelle lautet nun:
=VLOOKUP(B3,$G$2:$H$6,2,FALSE)
Normalerweise würden Sie die Nachschlagetabelle in eine andere Registerkarte desselben Arbeitsblatts einfügen, aber die Daten können von überall bezogen werden.
VBA – die IF-Anweisung
Eine Alternative besteht darin, eine benutzerdefinierte VBA-Funktion zu erstellen und die gesamte IF-Logik in VBA-Code zu setzen.
Dies hat den Vorteil von Es ist viel einfacher zu lesen und zu verstehen.
Der Nachteil ist die Notwendigkeit der Codesicherheit und die Sorge, dass der VBA-Code legitim und kein Virus ist. Wenn Ihre Benutzer nicht daran gewöhnt sind, Arbeitsblätter mit angehängtem Code abzurufen, sollten Sie VBA-Optionen vermeiden.
Hier ist ein Code-Snippet. Dies entspricht der Logik des verschachtelten IF am Anfang dieses Artikels, jedoch wie Sie kann sehen, ist viel einfacher zu lesen:
" Using a VBA if statement structure
" ==================================
If Rating = 5 Then
Prediction = "Boom"
ElseIf Rating = 4 Then
Prediction = "Recovery"
ElseIf Rating = 3 Then
Prediction = "Turning Point"
ElseIf Rating = 2 Then
Prediction = "Recession"
ElseIf Rating = 1 Then
Prediction = "Depression"
End If
VBA: Fall auswählen
Eine noch einfacher zu lesende Struktur ist die Anweisung „Fall auswählen“.
"Using a Select Case structure
"=============================
Select Case Rating
Case 5
Prediction = "Boom"
Case 4
Prediction = "Recovery"
Case 3
Prediction = "Turning Point"
Case 2
Prediction = "Recession"
Case 1
Prediction = "Depression"
End Select
Die Select Case-Anweisung ist eine weitere VBA-Struktur, mit der eine Reihe von Alternativen mit einem Minimum an wiederholter Eingabe bewertet werden können . Es ist auch einfacher und leichter zu lesen und sollte verwendet werden, wenn es mehr als 3 Alternativen der interessierenden Variablen gibt.
VBA: und darüber hinaus…
Zum Schluss, um Ihnen eine Vorstellung zu geben Von der größeren Leistung von Select Case ist hier eine erweiterte Version von Select Case:
Select Case Rating
Case 4.5 To 10
Prediction = "Boom"
Case 3.5 To 4.49
Prediction = "Recovery"
Case 2.5 To 3.49
Prediction = "Turning Point"
Case 1.5 To 2.49
Prediction = "Recession"
Case 0.5 To 1.4
Prediction = "Depression"
Case 0 To 0.49
Prediction = "Money under the Mattress"
Case Else
Prediction = "No prediction - there"s no economy left!"
End Select
Diese Version prüft auf Wertebereiche (z. B. eine Bewertung von mehr als oder gleich 3,5, aber weniger als oder gleich 4,5) und ermöglicht es jemandem, der eine gebrochene Bewertung wie anbietet 2.5.
Außerdem befindet sich am unteren Rand der Struktur das Steuerelement „Else“. Grundsätzlich deckt es ev ab Alles andere haben wir in unseren vorhergehenden Elseifs nicht behandelt. Wenn nichts der Bewertung entspricht, bietet der Else-Teil der Struktur eine alternative Steuerung.
Nun, das ist es für die IF-Funktionsreihe. Behalten Sie Ihr Feedback, Ihre Fragen und Vorschläge bei. Bis zum nächsten Mal.
Siehe auch
- Die SUMME von Excel ist viel mehr
- Erstellen eines komplexen Excel Zelle einfach zu bedienen
- Mehr verschachtelte IF-Optionen
- Die Option CHOOSE in Excel
- Die IF-Funktion von Excel