IFS VBA

IFS VBA

IFS VBA

Möchtest Du mit der IFS VBA Funktion/Formel umzugehen wissen, bzw. verstehen was Diese überhaupt ist?

Dann heiße ich Dich in meinem heutigen Beitrag zur Visual Basic for Applications Kategorie herzlich willkommen.

Vielleicht steht Dir anschließend auch noch der Sinn nach anderweitigen VBA relevanten Beiträgen: VBA For Schleife, InStr, Range.

Achtung! Die IFS Funktion ist nur im Excel-Kontext als Formel vorhanden! Die dazu benötigte Excel Version findet man auf Windows & Mac, wenn man mind. Office 2019, oder ein Microsoft 365 Abonnement hat.

Awendungsfälle

Wer kennt es nicht? Man möchte durch kurze geschickte Abfragen den Ablauf des Programmes bestimmen und leiten.

Vielleicht sind Dir auch schon derartige Konstroll– , bzw. Verzweigungs-Strukturen wie das „If-Then-Else“- & das „Select-Case“ bekannt.

Das gut bekannte If-Then-Else„-Konstrukt wird eher für die Abarbeitung, bzw. Steuerung von verschiedenen Ausgangspunkten verwendet.

Ich kann prüfen, ob die Performance einer Aktie gut war, jedoch dennoch die Dividende gekürzt wurde.

Bei dem „Select-Case„-Konstrukt hingegen, prüft man für gewöhnlich einen Ausgangspunkt – z. B. auch Bereiche dessen – und handelt je nach Ergebnis.

Bleiben wir bei unserem kleinen Aktien-Beispiel und verfahren je nach Dividendenrendite anders:

Dim dividendYieldPercentage As Integer = 9
Dim message As String = ""
Select Case
    Case 1 To 2
        message = "Dividend yield is okay!"
    Case 3 To 4
        message = "Woah! Nice yield!"
    Case 5 To 6
        message = "Hmm, nice but maybe too much!?"
    Case Else
        message = "Woah, this is too much to be good!"
End Case

In der Kürze..

Häufig sagt man, dass in der Kürze die bekannte Würze liegt, man möchte es also ab und zu gerne kurz und schmerzlos haben.

Wenn man jedoch die Länge des jeweiligen Konstruktes in Augenschein nimmt, hat man ein anderes Gefühl, eher lang und wiederholend.

Im Falle einer relativ simplen „If-Anweisungkann man den Ausdruck natürlich auch optional auf eine Zeile reduzieren.

Je komplexer die eben erwähnte „If-Anweisung“ allerdings wird, desto unlesbarer und unmöglich wird die Anweisung.

Dim performance As Integer = 100
If performance <= 20 Then MsgBox("Yay")

Nehmen wir allerdings das Beispiel von oben, wäre es unlesbar und teilweise auch nicht möglich, daher würde ich nur in seltenen Fällen zur Verkürzung raten.

IFS VBA Erklärung

Mit der IFS-Funktion haben wir eine weitere Kontrollstruktur, um den Ablauf des „Programmes“ zu gestalten.

Die IFS VBA (Excel) Formel wird dabei zunächst analog zum „Einzeiligen If“ formuliert, mit einem kleinen Unterschied.

Statt weniger Ausdrücke wie im If-Beispiel, können wir nun mehrere Ausdrücke wie durch Zauberhand kombinieren.

IFS VBA Syntax – Schreibweise

Schauen wir uns zum obigen Vergleich einmal die Struktur, bzw. die Syntax der IFS-Funktion an:

=IFS(<condition 1>, <value 1>, <condition 2>, ....)

Dabei stellen wir fest, dass wir innerhalb der Klammern – also durch Angabe von Parametern – verschiedene Paare an Konditionen & Werten angeben können.

Laut offizieller Dokumentation der IFS VBA Funktion von Microsoft, können wir bis zu 127 verschiedene Bedingungen prüfen und auswerten.

Natürlich sollte man das nach Möglichkeit vermeiden, wer möchte schon eine gefühlt 40000 Zeichen lange Zeile lesen..

Neben der schier endlos langen Zeile, hat man natürlich noch ein Problem mit den einzelnen Reihenfolgen, wo man sich dann leicht irren kann.

Beispiel – Excel Zelle anhand IFS Formel

Um nun beispielsweise den Wert einer Zelle im Excel-Sheet zu setzen, könnte man analog zu oben folgendes Beispiel verwenden.

Wir ziehen uns die Dividendenrendite dafür nun aus einer Zelle namens „A2“ und setzen den Wert der Zelle „A3“ dann auf das Ergebnis.

=IFS(A2<3, "Yield OK!", A2<5, "Nice yield!", A2<7, "Too much!")

Wenn im Beispiel der Wert in der Zelle „A2“ z. B. unter 3 liegt, dann gibt die Formel den Wert „Yield OK!“ zurück.

Bei einem Wert unter 5 dann „Nice yield!“ und und und..

VBA IFS Excel
VBA IFS Excel

Funktioniert übrigens auch bei Google Sheets

Die IFS-Formel gibt es übrigens auch für die bekannte Cloud-Tabellen-Plattform Google Sheets.

Der einzige simple Unterschied ist, dass man dort statt Kommas (,) dann Semikolons (;) verwenden muss.

Aber ich wollte IFS für VBA :(!?

Kein Problem! Leider wird man wie oben gesehen bei den Begriffen „IFS VBA“ größtenteils nur im Bereich der Tabellen – also Microsoft Excel & Google Sheets – fündig.

Es gibt allerdings auch Codes wie Dieser hier (vom Stackoverflow-Nutzer „jsheeran“), Welcher eine ähnliche Implementierung im Bereich VBA darstellt:

Public Function UdfIfs(ParamArray args() As Variant) As Variant
  Dim i As Integer
  i = 0 ' or 1 if you're not using zero-based indexing
  Do Until CBool(args(i)) Or (i >= UBound(args))
    i = i + 2
  Loop
  If i < UBound(args) Then
    UdfIfs = args(i + 1)
  End If
End Function

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert