Vielfach verschachtelte Bedingung auswerten

Ich benötige in Excel 97 eine neunfach verschachtelte Wenn-Funktion. Excel selbst erlaubt aber lediglich sieben verschachtelte Ebenen. Gibt es an dieser Stelle einen geheimen Trick oder eine Lösung, um die Wenn-Funktion in Excel 97 neunfach zu verschachteln?

Wie Sie richtig bemerkt haben, lässt sich die Funktion WENN in Excel lediglich über sieben Ebenen verschachteln, was in den meisten Fällen auch ausreichend ist. Zur Lösung Ihres Problems greifen Sie am besten auf die Fähigkeiten von Visual Basic for Applications (VBA) zurück und definieren dort eine eigene Funktion.
Bereiten Sie zunächst Ihr Arbeitsblatt in Excel so weit vor, dass die benötigten Eingabewerte für die verschachtelten Bedingungen zur Verfügung stehen. Starten Sie anschließend den Visual-Basic-Editor mit dem Befehl »Extras | Makro | Visual-Basic-Editor«. Wählen Sie dort den Befehl »Einfügen | Modul« und geben Sie danach einen Programm-Code zur Definition einer eigenen Funktion zum Beispiel folgendermaßen ein:

Function Entscheidung(W1, W2, W3, W4, W5, W6, W7, W8, W9)
Entscheidung = „W0“
If W1 > 0 Then
  Entscheidung = „W1“
  If W2 > 0 Then
    Entscheidung = „W2“
    If W3 > 0 Then

      Entscheidung = „W3“
      If W4 > 0 Then
        Entscheidung = „W4“
        If W5 > 0 Then
          Entscheidung = „W5“
          If W6 > 0 Then
            Entscheidung = „W6“
            If W7 > 0 Then
              Entscheidung =  „W7“
              If W8 > 0 Then
               Entscheidung = „W8“
                If W9 > 0 Then
                 Entscheidung =“W9“
               End If
              End If
            End If
          End If
        End If
      End If
    End If
  End If
End If
End Function


Der Aufbau des Programm-Codes dient an dieser Stelle lediglich als Beispiel für das Prinzip. Auf insgesamt neun Ebenen dienen auch neun verschiedene Werte jeweils als Vergleichsgröße in einer Bedingung. Diese Werte sind der Funktion als Argumente zu übergeben. Abhängig vom Ergebnis der einzelnen Bedingungen erhält die Funktion einen Wert als Ergebnis zugewiesen. Das Beispiel prüft sukzessiv, ob die Eingabewerte positiv sind und informiert anschließend mit einem Kürzel, bis zu welchem Argument die Werte positiv sind. Sie können die Bedingungen nach Belieben ändern oder sie auch durch »Else«-Abschnitte ergänzen. Falls nur ein einzelner Wert in die Bedingungen eingeht, können Sie den Aufbau mit der Funktion »Case Select« übersichtlicher gestalten, etwa in folgender Form:

Function Entscheidung2(Wert1, Wert2, Wert3)
Select Case Wert1
  Case 1
    Entscheidung2 = Wert2
  Case 2
    Entscheidung2 = Wert3
  Case 3
    Entscheidung2 = Wert2 + Wert3
  Case 4
    Entscheidung2 = Wert2 * Wert3
  Case 5
    Entscheidung2 = Wert2 * Wert2
  Case 6
    Entscheidung2 = 3 * Wert2
  Case 7
    Entscheidung2 = Wert3 / 3
  Case 8
    Entscheidung2 = Wert3 * Wert3
  Case 9
    Entscheidung2 = Wert2 / Wert3
  Case Else
    Entscheidung2 = 0
End Select
End Function


Dieses Beispiel entscheidet anhand der Variablen »Wert1«, welche Rechenoperationen mit den weiteren Argumenten der selbst definierten Funktion auszuführen sind. Auch an dieser Stelle dient das Beispiel lediglich als Muster für eine Funktion, die Sie Ihren konkreten Anforderungen entsprechend festlegen müssen. Auf der Heft-CD zu dieser Ausgabe finden Sie unter dem CHIP-Code VERSCHAC ein fertiges Beispiel.