Herbers Excel-Forum - das Archiv

Probleme IF-Schleife

Bild

Betrifft: Probleme IF-Schleife
von: B@sti

Geschrieben am: 09.01.2007 17:35:40
Hallo Leute!
Ich habe folgendes Problem: ich moechte verschiedene Argumente mit Hilfe einer IF-Schleife abpruefen (s. untenstehende Formel). Bin aber wahrscheinlich an die Grenzen der IF-Funktion angelangt, da mit ihr nur bis zu sieben Bedingungen abgeprueft werden koennen.
Kennt irgendjemand ne andere Formel bzw. weiss, wie ich die Abfrage umformulieren koennte, damit Excel die Formel 'schluckt'?
(VBA-Code waere denkbar, allerdings sollte diese Moeglichkeit ausgeklammert bleiben, da auch andere Kollegen ohne jeglichen VBA-Kenntnisse hiermit klarkommen muessen).
Vielen Dank schonmal fuer eure Muehen und Antworten.
Gruss B@sti
=IF($BL7="see FY06/07","see FY06/07",IF($BL7="see FY07/08","see FY07/08",IF($BL7="see FY08/09","see FY08/09",IF($BL7="see FY09/10","see FY09/10",IF($BL7="see FY10/11","see FY10/11",IF(OR($BK7=0,$BK7=""),0,IF(OR($BL7=0,$BL7=""),"Check starting price!",IF(OR($BM7="",$BM7="-",$BN7="",$BN7=0),$BL7,IF(OR($BM7<$BP$3,$BM7>$BP$4),"Check date of price change!",(SUM(($BL7*(12-(VLOOKUP($BM7,'Distribution key & DATA'!$E$20:$G$32,3,FALSE)))),(($BO7*(VLOOKUP($BM7,'Distribution key & DATA'!$E$20:$G$32,3,FALSE)))))/12)))))))
Bild

Betrifft: AW: Probleme IF-Schleife
von: yogi

Geschrieben am: 09.01.2007 22:10:33
Tach B@sti
die Formel ist mir zu kompliziert um sie auseinander zu nehmen. Aber wenn ich so Riesendinger habe, teile ich sie in Einzelteile auf, deren Resultat ich in ausgeblendeten Zeilen/Spalten ablege. Lässt sich dann auch einfacher überprüfen.
Gruss
yogi
Bild

Betrifft: AW: Probleme IF-Schleife
von: B@sti
Geschrieben am: 09.01.2007 22:57:56
Hallo Yogi,
danke fuer Deine Antwort, mir bleibt wohl kaum eine andere Loesung uebrig ;-)
Gruss B@sti
Bild

Betrifft: AW: IF-Konstrukt, Formel aufgeteilt, z.B. so,...
von: Luc:-?

Geschrieben am: 09.01.2007 22:58:26
...Basti,
Hier mal deine Formel übersichtlicher dargestellt, entschlackt und korrigiert:
=IF($BL7="see FY06/07","see FY06/07",
IF($BL7="see FY07/08","see FY07/08",
IF($BL7="see FY08/09","see FY08/09",
IF($BL7="see FY09/10","see FY09/10",
IF($BL7="see FY10/11","see FY10/11",
IF(OR($BK7=0,$BK7=""),0,
IF(OR($BL7=0,$BL7=""),"Check starting price!",
IF(OR($BM7="",$BM7="-",$BN7="",$BN7=0),$BL7,
IF(OR($BM7<$BP$3,$BM7>$BP$4),"Check date of price change!",
($BL7*(12-VLOOKUP($BM7,'Distribution key & DATA'!$E$20:$G$32,3,FALSE))+
$BO7*VLOOKUP($BM7,'Distribution key & DATA'!$E$20:$G$32,3,FALSE))/12)))))))))

Da 9 IFs hintereinander stehen, müssen dem letzten Else-Wert SUM(...)/12 auch 9 Klammern folgen. Etliche Klammern sind dafür - wie auch SUM - überflüssig.
Um das Überschreiten der max Untergliederungstiefe zu vermeiden, bietet sich die Fkt CHOOSE an. Damit die vorgegebene Reihenfolge gewahrt bleibt, wird aus den Vgll ein String aus 0 und 1 gebildet. Die letzte 1 steht für den ultimativen Else-Wert, damit kein Fehler entstehen kann. Die Fkt SEARCH gibt die Position der 1. 1 im String wieder. Diese dient der Fkt CHOOSE als Auswahlwert für die anschließend in gleicher Reihenfolge angeordneten zugehörigen Ergebnisse...
=CHOOSE(SEARCH(1,
--($BL7="see FY06/07")&
--($BL7="see FY07/08")&
--($BL7="see FY08/09")&
--($BL7="see FY09/10")&
--($BL7="see FY10/11")&
--OR($BK7=0,$BK7="")&
--OR($BL7=0,$BL7="")&
--OR($BM7="",$BM7="-",$BN7="",$BN7=0)&
--OR($BM7<$BP$3,$BM7>$BP$4)&
1),
"see FY06/07",
"see FY07/08",
"see FY08/09",
"see FY09/10",
"see FY10/11",
0,
"Check starting price!",
$BL7,
"Check date of price change!"),
($BL7*(12-VLOOKUP($BM7,'Distribution key & DATA'!$E$20:$G$32,3,FALSE))+
$BO7*VLOOKUP($BM7,'Distribution key & DATA'!$E$20:$G$32,3,FALSE))/12)

Doppelminus dient zur Umwandlung des Wahrheitswerts in eine Zahl (0 oder 1).
Wenn sich bestimmte abgrenzbare, quasi selbständige Formelteile mehrfach wiederholen, ist es zweckmäßig, diese als benannte Formeln zu definieren und dann nur ihre Namen in der Hauptformel zu verwenden. Dadurch lässt sich die Hierarchieschranke ebenfalls umgehen. Das ist bei diesem IF-Konstrukt aber nicht möglich.
Viel Erfolg, Basti!
Gruß Luc :-?
PS: Hab' schon längere Formeln analysiert, Yogi! ;-)
Bild

Betrifft: Formelbandwürmer
von: yogi

Geschrieben am: 10.01.2007 14:29:55
Tach Luc
Chapeau! Wer solche Bandwürmer analisieren kann !!
Formeln mit 9 verschachtelten IF-Bedingungen sind, auch wenn sie so gut strukturiert sind wie du das gemacht hast, kaum prüfbar und noch viel schwieriger zu modifizieren. Wenn dann Resultate der Bandwürmer von anderen Bandwürmern verwendet werden, gibts am Schluss einen Bandwurmsalat, den niemand mehr durchschaut.
Daher mein (unverbidlicher) Vorschlag: Nie mehr als 2 verschachtelte IF's ;-)))
Gruss yogi
Bild

Betrifft: ...in meiner Alternative sind gar keine! ;-) orT
von: Luc:-?
Geschrieben am: 10.01.2007 15:43:52
Gruß Luc :-?
 Bild