=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"))
它给了我一个参数太多的错误
答案1
公式末尾缺少一个右括号,因为AND(...), ...)
子句中有一个多余的右括号。
'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"))
在绝对必要时尽量减少使用括号。
答案2
除了其他问题之外,您没有正确嵌套“IF()”。这似乎是一个概念问题,但很容易解决。
例如,第一个IF()
遵循传统的嵌套IF()'s
形式:如果是这个,那么是那个,否则是这个新的 IF。都很好。第一个参数测试某些内容,第二个参数是如果它为 TRUE 则您想要的内容,第三个参数是下一个 IF。
然而,接下来的IF()
第一个带有AND()
“完整”的公式:它包含了所有三个参数,从而结束了你的公式:
IF(AND((F2-E2)>0,E2=0),"额外项目","额外数量")
- AND((F2-E2)>0,E2=0) 正在被测试。
- 如果这是真的,您就会得到“额外物品”。
- 如果为 FALSE,则您将获得“额外数量”。
没有地方IF()
可以考虑下一个。公式在这里停止,但您输入了更多,所以它告诉您太多了。事物的实际形式使下一个成为IF()
第四个参数,最后一个IF()
成为第五个参数,因此它给出“参数太多”消息。
猜测一下,这种情况可能如何发生,你可能使用了某个公式“模板”,并应该将引号中的结果替换为每对中第一个结果,然后将引号中的第二个结果替换为整个下一个子句,IF()
但更改了第一个子句,而保留第二个子句。但这只是猜测(不太准确?)。
您的AND()
条款完全没问题。在我看来,您没有遗漏任何括号或将括号放在这些条款中 — — 尽管问题已被编辑,也许最初是这样,但现在已修复(尽管当我尝试理解编辑时,看起来并非如此)。您可以删除“F2-E2”部分周围的 (),但您可能会觉得这样对您来说更易读。或者您的老板可能也是如此。或者,由于如果省略括号,公式有时会变得非常不同,因此可能有人教您使用括号的次数超过了严格必要的次数。(奇怪的是 = 有时函数可能在括号中的范围下工作,但没有括号就会失败,原因并不明显。)如果您想像其他人所要求的那样删除它们,那么您在这里所做的任何事情都不是必要的。