Excel 中嵌套的 IF(AND) 语句包含太多参数

Excel 中嵌套的 IF(AND) 语句包含太多参数

我正在尝试返回一个布尔值,根据输入的数字(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 年后了。

很少有人会写出类似这样的公式,然后设置案例,准确且至少明确地测试每个条款。通常如果它看起来有效,它就被认为是有效的......

相关内容