Tenho certeza de que a resposta é incrivelmente simples, mas examinei essa fórmula por horas e não consigo descobrir o erro. Essencialmente, o que eu quero que a fórmula faça é se F3 = "Freshman" então verifique se U3 está em branco, passe por N3 e insira um valor, se U3 não estiver em branco passe por U3. Então se F3 != "Freshman" e V3 estiver em branco, passe por S3, se V3 não estiver em branco, use V3. Talvez haja uma maneira menos complicada de fazer isso, mas não tenho certeza.
=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,"")))))))))
Eu sei que há muitos ifs aninhados, o que provavelmente é o que está me atrapalhando. Se alguém pudesse ajudar, seria muito apreciado.
Responder1
Coloquei sua fórmula no bloco de notas. Então, para cada condição, iniciei uma nova linha e usei a guia para classificar as diferentes funções IF. Isso torna seu problema mais fácil de depurar. Não sei como fazer upload do arquivo, infelizmente. Descobri que o último ")" é demais e que existem algumas inconsistências na fórmula.
Por exemplo, na segunda listagem, a última instrução termina com S3>=lists$I$8,"") enquanto em outras listagens termina com S3>=lists$I$8,0,"").
Na terceira listagem IF(U3>=Lists!$H$4,2 está faltando.
Se quiser posso te enviar o arquivo para ver você mesmo
Responder2
Aqui está em notação codificada
=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,"")
)
)
)
)
)
)
)
)
)
Responder3
Aqui está uma alternativa: Reduza o aninhamento.
Eu recomendaria colunas auxiliares, mas não é estritamente necessário. Com colunas auxiliares, as fórmulas ficariam assim:
[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])))
Como alternativa, se você tiver espaço em seus dados, recomendo adicionar os valores 0.5 to 3 step 0.5
no intervalo J2:J7
. Pode ser mais fácil manter a manutenção, pois você pode alterar os valores - se houver necessidade - sem tocar nas fórmulas. Se você fizesse isso, as fórmulas poderiam ser:
[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])))
Muito provavelmente, estes poderiam ser melhorados ainda mais. Espero ter pelo menos lhe dado uma ideia.