Überwindung der max. 7-fachen Verschachtelung der WENN-Funktion

Dieses Thema im Forum "Office-Programme" wurde erstellt von geldberg, 8. Januar 2006.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. geldberg

    geldberg ROM

    Registriert seit:
    28. Dezember 2002
    Beiträge:
    7
    Hallo Leute,
    wer kann mir mit folgendem Excel-Problem (Office-XP-Version)weiterhelfen:

    =WENN(ODER(E16="";G16="";H16="");"";SVERWEIS($G16;WENN(LINKS($E16;2)="01";Rohr_EP;WENN(LINKS($E16;2)="02";Armatur_EP;WENN(LINKS($E16;2)="03";Bogen_EP;WENN(LINKS($E16;2)="04";Flansch_EP;WENN(LINKS($E16;2)="05";Reduzierung_EP;"")))));SVERWEIS($H16;Isolierstärke;2)))

    Leider kann ich in Excel keine weitere WENN-Verschachtelung innerhalb der Formel verwenden, da ich nur max. sieben verwenden kann. Ich muß jedoch bis zu 40 Fallunterscheidungen innerhalb der Formel vornehmen mit der Ergebnisrückgabe als Zellbezug bzw. -bereich zur weiteren Verwendung im Sverweis-Befehl, damit aus der richtigen Matrix der richtige Preis entnommen wird.

    Gruß Rainer
     
  2. meyster

    meyster Halbes Megabyte

    Registriert seit:
    24. Dezember 2005
    Beiträge:
    748
    ich würde sagen: Da hilft nur noch Visual Basic ;)
     
  3. Winnie The Pooh

    Winnie The Pooh Viertel Gigabyte

    Registriert seit:
    12. September 2004
    Beiträge:
    3.247
    Kannst du das nicht über die VERWEIS-Funktion machen?
     
  4. geldberg

    geldberg ROM

    Registriert seit:
    28. Dezember 2002
    Beiträge:
    7
    Und wer kann mir da mit einem entsprechenden Code in VB helfen?
     
  5. First Evangelist

    First Evangelist Kbyte

    Registriert seit:
    19. Juni 2004
    Beiträge:
    333
    Hallole z´sammen.

    @ meyster: nö
    @ winnie: sicher. Die sverweis oder wahl Funktion stellen eine sehr gute Alternative dar.
    @geldberg: es geht auch mit der WENN-Funktion
    Man kann theoretisch bis zu 7 WENN miteinander verknüpfen. Praktisch aber mehr. Dazu muß man, jenachdem was man machen will, nach dem 7ten WENN ein "+" oder ein "&" schreiben. Schon passen weitere 7 WENN dahinter. Ein Beispiel:
    =WENN(B49=1;"Eins";WENN(B49=2;"Zwei";WENN(B49=3;"Drei";WENN(B49=4;"Vier";WENN(B49=5;"Fünf";WENN(B49=6;"Sechs";WENN(B49=7;"Sieben";""))))))&WENN(B49=8;"Acht";""))
    =WENN(B49=1;"Eins";WENN(B49=2;"Zwei";WENN(B49=3;"Drei";WENN(B49=4;"Vier";WENN(B49=5;"Fünf";WENN(B49=6;"Sechs";WENN(B49=7;"Sieben";""))))))&WENN(B49=8;"Acht";""))
    oder
    =WENN(B51=1;1;WENN(B51=2;2;WENN(B51=3;3;WENN(B51=4;4;WENN(B51=5;5;WENN(B51=6;6;WENN(B51=7;7)))))))+WENN(B51=8;8)

    Viel Spaß beim Testen

    :jump: FE
     
  6. meyster

    meyster Halbes Megabyte

    Registriert seit:
    24. Dezember 2005
    Beiträge:
    748
    @First Evangelist:

    möchte ja gar nicht bestreiten, dass das geht. Aber so ne verschachtelte Funktion wird irgendwann ja völlig unhandlich und unübersichtlich. Eine einfache Schleife in VB erfüllt oftmals den gleichen Zweck, ist 10 Zeilen lang und auch nicht so schwer.

    Allerdings sollte man sich dazu schon ein Buch kaufen und sich selbst nen Crashkurs beibringen.
     
  7. First Evangelist

    First Evangelist Kbyte

    Registriert seit:
    19. Juni 2004
    Beiträge:
    333
    @ meyster
    Da haste zwar Recht, aber daher auch mein Verweis auf die SVerweis und/oder Wahl - Funktionen. Die sind eindeutig simpler und kürzer.
    Außerdem hat der TO doch bekanntgegeben, dass er mit VBA nix am Hut hat. Formeln hingegen scheint er zumindest einigermaßen zu beherrschen. Jetzt frage ich mich: Was ist einfacher?? Eone verschachtelte Wenn-Funktion oder alternativ eine Wahl- bzw. SVerweis-Funktion oder ein Einarbeiten in VBA für einen Newbie??? :confused:
     
  8. MIKAPet

    MIKAPet Kbyte

    Registriert seit:
    16. Dezember 2003
    Beiträge:
    306
    Hallo geldberg
    Nur mal ein Versuch, bitte unbedingt an eine Kopie ausprobieren:
    Ich gehe mal davon aus, dass die verschachtelte Wenn-Funktion innerhalb deiner Formel nur einen Wert ausgibt, mit dem weitergerechnet wird. Nämlich den Einkaufspreis (_EP). Da es ja immer nur einen ausgegebenen Wert gibt, könnte es so vielleicht klappen:
    In einer freien Zelle-->Spalte die 7 mal verschachtelten "wenn"-Formeln eingeben.
    Ich habe mal B5 genommen, nimmt Bezug auf A5
    =WENN(LINKS(A5;2)="01";Rohr_EP;WENN(LINKS(A5;2)="02";Bogen_EP;WENN(LINKS(A5;2)="03";Schelle_EP;WENN(LINKS(A5;2)="04";SchraubeM6_EP;WENN(LINKS(A5;2)="05";SchraubeM8_EP;WENN(LINKS(A5;2)="06";Verlängerung1Zoll_EP;WENN(LINKS(A5;2)="07";Muffe45_EP;"")))))))
    In Zelle B6 die nächste 7mal verschachtelte Wenn-Funktion:
    =WENN(LINKS(A5;2)="8";Muffe90_EP;WENN(LINKS(A5;2)="9";Winkel45_EP;WENN(LINKS(A5;2)="10";Winkel90_EP;WENN(LINKS(A5;2)="11";Mutter_EP;WENN(LINKS(A5;2)="12";Dichtung_EP;"";)))))usw.
    In Zelle B7; B8 usw. ausfüllen, bis alle 40 Fallunterscheidungen aufgeführt bzw. in den Wenn-Funktionen untergebracht worden sind.
    Gibst Du nun in der Eingabzelle (bei mir A5) den Wert 11 ein, wird in Zelle B6 der _EP -Wert ausgegeben.
    In Deiner Formel ersetzt Du nun die Verschachtelte Wenn-Funktion mit der Funktion Summe(B5:B9). Je nachdem, wieviele Zellen in der Spalte B zusammengezählt werden müssen.
    Deine Formel sieht nun so aus:
    =WENN(ODER(E16="";G16="";H16="");"";SVERWEIS($G16;SUMME(B5:B9);SVERWEIS($H16;Isolierstärke;2)))
    Ob das so hinhaut, kann ich leider nicht sagen, da ich die Tabelle im Original nicht kenne (Die Namen "Dichtung_EP" usw. in meiner Wenn-Formel habe ich mir ausgedacht). Vielleicht klappt es ja.

    Ich sehe grad, hast ja schon ein paar gute Vorschläge bekommen, ich sende meinen aber dennoch mal ab:)
     
  9. geldberg

    geldberg ROM

    Registriert seit:
    28. Dezember 2002
    Beiträge:
    7
    ...
    Für mein Problem: "Suche von verschiedenen Einheitspreisen aus 31 verschiedenen Matritzen nach bestimmten Auswahlkriterien" hat schließlich die folgende Kombination aus WENN-, WAHL- und SVERWEIS-Funktion zum Erfolg geführt. Für alle Interessenten hier meine funktionierende Lösungsformel:
    =WENN(ODER(D16="";F16="";G16="");"";SVERWEIS($F16;WENN(WERT(LINKS(D16;2))<21;WAHL(SVERWEIS(D16;Codetabelle;5);Rohr_EP;Armatur_EP;Bogen_EP;Flansch_EP;Reduzierung_EP;T_Stück_EP;EFA_EP;KFA_EP;SFA_EP;B_unter30_EP;B_über30_EP;Trichter_EP;Kalotte_EP;Zeppelin_EP;ZvierKalotte_EP;ZzweiKalotte_EP;ZeinsKalotte_EP;ZvierZeppelin_EP;ZzweiZeppelin_EP;ZeinsZeppelin_EP);WAHL(SVERWEIS(D16;Codetabelle;5);Stoßkappe_EP;Abflachung_EP;EinsatzG_EP;EinsatzK_EP;Ausschnitt_EP;AusschnittR_EP;Rosette_EP;Regenabweiser_EP;Nähte_EP;Stoßkappe600_EP;Regenabweiser_groß_EP));SVERWEIS($G16;Isolierstärke;2)))

    Nochmals allen Tip-Gebern herzlichsten Dank und macht weiter so. Ihr seid absolut zu empfehlen.

    Geldberg
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen