有条件的IF()语句问题,未返回期望值

时间:2019-04-15 15:59:34

标签: excel excel-formula

当前正在用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。

3 个答案:

答案 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)