![Excel 中嵌套的 IF(AND) 语句包含太多参数](https://linux22.com/image/1621522/Excel%20%E4%B8%AD%E5%B5%8C%E5%A5%97%E7%9A%84%20IF(AND)%20%E8%AF%AD%E5%8F%A5%E5%8C%85%E5%90%AB%E5%A4%AA%E5%A4%9A%E5%8F%82%E6%95%B0.png)
我正在尝试返回一个布尔值,根据输入的数字(Z8)是否超过基于评分的某个阈值来判断是否允许升级。Excel 说我的函数参数太多,但我已经与其他用户进行了交叉检查,似乎我的语法是正确的。
我的代码如下:
=IF(AND(F8="Non-Clerical", Z8>=250), "YES", "NO", IF(AND(F8="C", Z8>=350), "YES", "NO", IF(AND(F8="SC", Z8>=500), "YES", "NO", IF(AND(F8="S", Z8>=550), "YES", "NO", IF(AND(F8="SS", Z8>=650, "YES", "NO", IF(AND(F8="SG1",, Z8>=700), "YES", "NO", IF(AND(F8="SG2", Z8>=750), "YES", "NO", IF(AND(F8="SG3", Z8>=800), "YES", "NO", IF(AND(F8="SG4", Z8>=850), "YES", "NO", IF(AND(F8="M1", Z8>=950), "YES", "NO", IF(AND(F8="M2", Z8>=1100), "YES", "NO", IF(AND(F8="M3", Z8>=1400),"YES", "NO", IF(AND(F8="M4",Z8>=1800), "YES", "NO", IF(F8="M5",Z8>=2500), "YES", "NO", IF(AND(F8="M6", Z8>=5000, "YES", "NO")))))))))))))))
任何帮助都值得感激,谢谢!
答案1
删除"NO"
Scott Craner 指出的部分,并修复在执行即时编写的深入公式时出现的三个错误(两个)
和一个AND()
)后,可以稍微改变公式的方法(尽管要进行大量的输入来删除位)如下:
=
IF(
OR(
AND(F8="Non-Clerical",Z8>=250),
AND(F8="C",Z8>=350),
AND(F8="SC",Z8>=500),
AND(F8="S",Z8>=550),
AND(F8="SS",Z8>=650),
AND(F8="SG1",,Z8>=700), (see below, near end about this line)
AND(F8="SG2",Z8>=750),
AND(F8="SG3",Z8>=800),
AND(F8="SG4",Z8>=850),
AND(F8="M1",Z8>=950),
AND(F8="M2",Z8>=1100),
AND(F8="M3",Z8>=1400),
AND(F8="M4",Z8>=1800),
AND(F8="M5",Z8>=2500),
AND(F8="M6",Z8>=5000)
),
"YES","NO")
这个想法是,由于每个AND()
条件都会生成相同的YES
,因此将它们收集起来,如图所示,在 中OR()
,将实现相同的效果,但让任何查看它的人都能更清楚地看到它。现在,或将来。但要真正让这个想法发挥作用,请像上面一样用Alt+来物理构造它Enter以继续向下移动行。然后,所有子句尽可能接近彼此位于一列中,使得结构差异(例如忘记 或 )很AND()
容易)
发现(如果错过了),但更好的是,一开始就很难错过。甚至可以通过复制类似以下内容来构造它:
AND(F8="",Z8>=),
并将其粘贴到任意需要的行,构建结构后填写两个条件。
作为动物,我们是“差异机器”:我们极其善于发现差异。尤其是运动,因为这是一种超级差异,但当然在这里无济于事!人们常说我们是“模式机器”,但发现模式只是基于发现差异的第二级分析。“只是”可能不公平,因为这种分析在过去几千年里养活了许多人类,但是……
无论如何,这样做对 Excel 来说并不重要,而且让你有机会发挥你的人力优势。“努力工作而不是……”不,等等,我现在有了: Work SMARTER, not harder!
强调这一点,差异捕捉带来了一个没有人解决的错误。在AND()
上面的第 6 个条款中,有一个多余的逗号:
AND(F8="SG1",,Z8>=700),
........................^^
在 中的第一个和第二个子句之间AND()
(我把它留在上面,这样人们就可以看到它在这种结构下是如何突出的)。这会导致该子句失败,因为FALSE
中返回了一个空子句AND()
。像给出的示例这样的深入制定很容易出现这种错误,这种错误非常微妙,但 Excel 却无法捕获(它怎么会知道这是一个错误?即使它可能应该询问,但保姆有一些实际的停止点,而 MS 显然在考虑这种事情之前就决定了这一点。)但可能会导致非常令人烦恼的故障排除。
在意识到需要排除故障之后。那可能已经是 12 年后了。
很少有人会写出类似这样的公式,然后设置案例,准确且至少明确地测试每个条款。通常如果它看起来有效,它就被认为是有效的......