当前正在用excel编写程序,该程序将根据用户输入返回值。当前公式具有5个不同的返回选项,这些返回选项基于用户对数字的选择而返回。我使用嵌入到更多IF()语句中的IF()语句来说明多个输入选项。但是,当我输入的数字超出了第一个IF()语句的范围时,即使它应该是另一个数字,我也会得到0。
对于下面的代码,C30是输入单元格,如果我要输入25,它应该返回.15。
=IF(C30<20, 0.35, IF(20<C30<40, 0.15, IF(40<C30<60, 0, IF(60<C30<80, -0.1, IF(80<C30, -0.2, 0)))))
从逻辑语句来看,它应该返回.15,但我得到的只是0。
答案 0 :(得分:4)
Excel不会使用20<C30<40
,而是:
AND(20<C30,C30<40)
但是您可以通过简单的匹配和选择来缩短此时间:
=CHOOSE(MATCH(C30,{0,20,40,60,80}),0.35,0.15,0,-0.1,-0.2)
如果您真的需要嵌套,则不需要进行额外的测试:
=IF(C30<20,0.35,IF(C30<40,0.15,IF(C30<60,0,IF(C30<80,-0.1,-0.2))))
如果找到第一个TRUE,IF将顺序解决并短路,因此它不需要其他逻辑。
答案 1 :(得分:1)
这里的问题是您用来评估C30
是否在数字范围内的逻辑。
IF(20<C30<40,...)
将不检查C30
是否在20到40之间。
相反,使用AND(cond1, cond2, ...)
检查值是否在范围内:
IF(AND(C30 > 20, C30 < 40), ...)
答案 2 :(得分:0)
替换诸如:
20<C30<40
具有:
AND(20<C30,C30<40)
等