Erro do Excel ao usar a combinação IF e And

Erro do Excel ao usar a combinação IF e And

=IF((F2-E2)=0,"No mismatch",IF(AND((F2-E2)>0,E2=0),"Extra Item","Extra Qty"),IF(AND((F2-E2)<0,F2>0),"Short Qty","Not received"))

Isso me dá um erro de muitos argumentos

Responder1

Está faltando um colchete de fechamento no final da fórmula porque há um colchete de fechamento extra na AND(...), ...)cláusula.

'fixed
=IF((F2-E2)=0,"No mismatch",IF((F2-E2)>0,"Extra Qty",IF(AND(F2-E2<0,F2<E2),"Short Qty","Not received")))
'improved
=IF((F2-E2)=0,"No mismatch",IF((F2-E2)>0,"Extra Qty",IF(F2<E2,"Short Qty","Not received")))
'check for blanks added
=IF(COUNT(E2:F2)<>2,"Not received",IF(F2-E2=0,"No mismatch",IF(F2-E2>0,"Extra Qty","Short Qty")))
'alternate
=IF(COUNT(E2:F2)<>2,"Not received", CHOOSE(SIGN(F2-E2)+2,"Short Qty","No mismatch", "Extra Qty"))

Minimize o uso de colchetes ao que for absolutamente necessário.

Responder2

Além de qualquer outra preocupação, você não está aninhando o `IF()' corretamente. Parece ser um problema conceitual, mas facilmente remediável.

Por exemplo, o primeiro IF()segue a forma aninhada tradicional IF()'s: SE isto, então AQUELE, ELSE este novo SE. Tudo certo. O primeiro argumento testa algo, o segundo é o que você deseja se for VERDADEIRO, o terceiro argumento é o próximo SE.

Porém, o próximo IF(), o primeiro com an AND()é "completo": contém todos os três argumentos usados ​​e, assim, encerra sua fórmula:

SE(AND((F2-E2)>0,E2=0),"Item Extra","Quantidade Extra")

  1. O AND((F2-E2)>0,E2=0) é o que está sendo testado.
  2. "Item Extra" é o que você obtém se for VERDADEIRO.
  3. "Quantidade Extra" é o que você obtém se for FALSO.

Não há lugar para o próximo IF()ser considerado. A fórmula para aqui, mas você digitou mais, então isso indica que há muito. A forma real das coisas faz do próximo IF()um quarto argumento e o último IF()um quinto argumento, de modo que dá a mensagem de "muitos argumentos".

Um palpite sobre como isso pode ter acontecido é que você poderia estar usando um "modelo" de fórmula de algum lugar e deveria substituir os resultados que estão entre aspas pelo que você mais gosta para o primeiro de cada par e, em seguida, substituir a segunda coisa que está entre aspas com toda a IF()cláusula seguinte, mas em vez disso alterou a primeira deixando a segunda intacta. Mas isso é apenas um palpite (ruim?).

Suas AND()cláusulas estão perfeitamente corretas. Você NÃO deixou nenhum parênteses de fora ou os colocou fora do lugar nessas cláusulas como eu as vejo - embora a questão tenha sido editada e talvez tenha sido originalmente assim, mas está corrigida agora (embora não pareça assim quando tento decifrar a edição). Você PODERIA eliminar () ao redor das partes "F2-E2", mas pode sentir que isso o torna mais legível para você. Ou seu chefe, talvez. Ou, como as fórmulas podem ocasionalmente ficar muito diferentes se os parênteses forem deixados de fora, alguém pode ter ensinado você a usá-los mais do que o estritamente necessário. (Estranho = às vezes uma função pode funcionar com um intervalo entre parênteses, mas falhar sem eles, sem motivo óbvio.) Absolutamente nada do que você está fazendo aqui os torna necessários se você quiser removê-los conforme outros pressionam.

informação relacionada