Ich bin sicher, dass es eine unglaublich einfache Antwort gibt, aber ich habe mir diese Formel stundenlang angesehen und kann den Fehler nicht herausfinden. Im Wesentlichen soll die Formel Folgendes tun: Wenn F3 = „Freshman“ ist, dann prüfen, ob U3 leer ist, N3 durchlaufen und einen Wert eingeben, wenn U3 nicht leer ist, U3 durchlaufen. Wenn dann F3 != „Freshman“ und V3 leer ist, S3 durchlaufen, wenn V3 nicht leer ist, V3 verwenden. Vielleicht gibt es eine weniger komplizierte Möglichkeit, dies zu tun, aber ich bin mir nicht sicher.
=IF(ISBLANK($U3)=TRUE,IF($F3="Freshman",IF(N3>=Lists!$H$7,3,IF(N3>=Lists!$H$6,2.5,IF(N3>=Lists!$H$5,2,IF(N3>=Lists!$H$4,1.5,IF(N3>=Lists!$H$3,1,IF(N3>=Lists!$H$2,0.5,IF(N3>Lists!$H$8,0,""))))))),IF(U3>=Lists!$I$7,3,IF(U3>=Lists!$I$6,2.5,IF(U3>=Lists!$I$5,2,IF(U3>=Lists!$I$4,1.5,IF(U3>=Lists!$I$3,1,IF(U3>=Lists!$I$2,0.5,IF(U3>=Lists!$I$8,"")))))))),IF(ISBLANK($V3)=TRUE,IF(S3>=Lists!$H$7,3,IF((S3>=Lists!$H$6,2.5,IF(S3>=Lists!$H$4,1.5,IF(S3>=Lists!$H$3,1,IF(S3>=Lists!$H$2,0.5,IF(S3>Lists!$H$8,0,"")))))),IF(V3>=Lists!$I$7,3,IF(V3>=Lists!$I$6,2.5,IF(V3>=Lists!$I$5,2,IF(V3>=Lists!$I$4,1.5,IF(V3>=Lists!$I$3,1,IF(V3>=Lists!$I$2,0.5,IF(V3>=Lists!$I$8,0,"")))))))))
Ich weiß, dass es viele verschachtelte ifs gibt, die mich wahrscheinlich stolpern lassen. Wenn mir jemand helfen könnte, wäre ich sehr dankbar.
Antwort1
Ich habe deine Formel in den Editor eingegeben. Dann habe ich für jede Bedingung eine neue Zeile begonnen und die Tabulatortaste verwendet, um die verschiedenen WENN-Funktionen zu sortieren. So lässt sich dein Problem leichter debuggen. Leider weiß ich nicht, wie ich die Datei hochladen soll. Ich habe festgestellt, dass das letzte ")" zu viel ist und dass die Formel einige Unstimmigkeiten aufweist.
Beispielsweise endet in der zweiten Auflistung die letzte Anweisung mit S3>=lists$I$8,""), während sie in anderen Auflistungen mit S3>=lists$I$8,0,"") endet.
In der dritten Auflistung fehlt IF(U3>=Lists!$H$4,2.
Wenn Sie möchten, kann ich Ihnen die Datei schicken, damit Sie sich selbst ein Bild machen können
Antwort2
Hier ist es in codierter Notation
=IF(ISBLANK($U2)=TRUE, 'if condition #1
IF($F3="Freshman", '#1 true condition
IF(N3>=Lists!$H$7,3,
IF(N3>=Lists!$H$6,2.5,
IF(N3>=Lists!$H$5,2,
IF(N3>=Lists!$H$4,1.5,
IF(N3>=Lists!$H$3,1,
IF(N3>=Lists!$H$2,0.5,
IF(N3>Lists!$H$8,0,"")
)
)
)
)
)
),
IF(S3>=Lists!$I$7,3, '#1 false condition
IF(S3>=Lists!$I$6,2.5,
IF(S3>=Lists!$I$5,2,
IF(S3>=Lists!$I$4,1.5,
IF(S3>=Lists!$I$3,1,
IF(S3>=Lists!$I$2,0.5,
IF(S3>=Lists!$I$8,"")
)
)
)
)
)
)
), 'everything before the comma is one function
IF(ISBLANK($V2)=TRUE, 'new #2 if condition
IF(U3>=Lists!$H$7,3, '#2 true condition
IF((U3>=Lists!$H$6,2.5,
IF(U3>=Lists!$H$4,1.5,
IF(U3>=Lists!$H$3,1,
IF(U3>=Lists!$H$2,0.5,
IF(Lists!$H$8,0,"") 'here is an if without a test condition
)
)
)
)
),
IF(V3>=Lists!$I$7,3, '#2 false condition
IF(V3>=Lists!$I$6,2.5,
IF(V3>=Lists!$I$5,2,
IF(V3>=Lists!$I$4,1.5,
IF(V3>=Lists!$I$3,1,
IF(V3>=Lists!$I$2,0.5,
IF(V3>=Lists!$I$8,0,"")
)
)
)
)
)
)
)
)
)
Antwort3
Hier ist eine Alternative: Reduzieren Sie die Verschachtelung.
Ich würde Hilfsspalten empfehlen, aber das ist nicht unbedingt notwendig. Mit Hilfsspalten würden die Formeln folgendermaßen aussehen:
[N]: {=IFERROR(CHOOSE(LARGE(ROW($H$2:$H$7)*(N3>=$H$2:$H$7),1)-1,0.5,1,1.5,2,2.5,3),IF(N3>=$H$8,0,""))}
[S]: {=IFERROR(CHOOSE(LARGE(ROW($I$2:$I$7)*(S3>=$I$2:$I$7),1)-1,0.5,1,1.5,2,2.5,3),IF(S3>=$I$8,0,""))}
[U]: {=IFERROR(CHOOSE(LARGE(ROW($H$2:$H$7)*(U3>=$H$2:$H$7),1)-1,0.5,1,1.5,2,2.5,3),IF(U3>=$H$8,0,""))}
[V]: {=IFERROR(CHOOSE(LARGE(ROW($I$2:$I$7)*(V3>=$I$2:$I$7),1)-1,0.5,1,1.5,2,2.5,3),IF(V3>=$I$8,0,""))}
=IF(ISBLANK($U3),IF($F3="Freshman",[N],[U],IF(ISBLANK($V3),[S],[V])))
Wenn Sie in Ihren Daten über den Platz verfügen, empfehle ich alternativ, die Werte 0.5 to 3 step 0.5
im Bereich hinzuzufügen J2:J7
. Dies erleichtert möglicherweise die Verwaltung, da Sie die Werte ändern können – falls dies jemals erforderlich sein sollte – ohne die Formeln zu berühren. Wenn Sie dies tun, könnten die Formeln wie folgt lauten:
[N]: {=IFERROR(INDEX($J$2:$J$8,LARGE(ROW($H$2:$H$7)*(N3>=$H$2:$H$7),1)-1),IF(N3>=$H$8,0,""))}
[S]: {=IFERROR(INDEX($J$2:$J$8,LARGE(ROW($I$2:$I$7)*(S3>=$I$2:$I$7),1)-1),IF(S3>=$I$8,0,""))}
[U]: {=IFERROR(INDEX($J$2:$J$8,LARGE(ROW($H$2:$H$7)*(U3>=$H$2:$H$7),1)-1),IF(U3>=$H$8,0,""))}
[V]: {=IFERROR(INDEX($J$2:$J$8,LARGE(ROW($I$2:$I$7)*(V3>=$I$2:$I$7),1)-1),IF(V3>=$I$8,0,""))}
=IF(ISBLANK($U3),IF($F3="Freshman",[N],[U],IF(ISBLANK($V3),[S],[V])))
Aller Wahrscheinlichkeit nach könnten diese noch weiter verbessert werden. Ich hoffe jedoch, dass ich Ihnen zumindest eine Vorstellung davon gegeben habe.