我一直在寻找,但似乎无法在我的电子表格中找到一个具有 4 个值范围的 IF 函数。
我需要一个返回以下值的 IF 函数:
0
如果该数字介于 0 和略低于 1 之间(即 <1)。6
如果数字介于 1 和 2 以下。8
如果数字介于 2 和 3 以下。10
如果数字在 3 到 4 之间。
编辑:=IF(A4>=3,10,IF(AND(A4>=2,P4<3),8,IF(A4>=1,6,0)))
答案1
对于您描述的情况, cybernetic.nomad 提供的INDEX
解决MATCH
方案可能是最简单的。如果数字始终与您描述的完全一致,那么 Chris Rogers 提供的答案甚至更简单。
我将尝试回答一个更普遍的问题:是否有一种方法可以在单个函数中检查多个条件,而无需嵌套多个IF
函数。IFS
函数(我认为它是在 Excel 2016 中引入的)可以让您做到这一点。
该函数采用多对参数,每对参数代表一个要测试的条件,后面是条件为真时要返回的值。该函数从第一个参数开始处理参数对,并继续处理,直到找到一个为真的条件。
=IFS(A4<0,NA(),A4<1,0,A4<2,6,A4<3,8,A4<4,10,TRUE,NA())
上述函数将:
- 如果 A4 小于 0,则返回 #N/A(您没有说明在这种情况下应该发生什么)。
- 如果 A4 小于 1,则返回 0(A4 也必须 >=0,否则前面的测试为真)。
- 如果 A4 小于 2(并且 >=1),则返回 6。
- 如果 A4 小于 3(并且 >=2),则返回 8。
- 如果 A4 小于 4(并且 >=3),则返回 10。
- 否则返回#N/A。
在这种情况下,您可以省略最后两个参数(,TRUE,NA()
),因为NA()
如果不满足任何条件,将返回它们。
答案2
INDEX/MATCH
可以很容易地做到这一点。假设要检查的值在A4
:
=INDEX({0,6,8,10},MATCH(A4,{0,1,2,3,4}))
(请注意,如果内容A4
低于零或高于 4,这将返回错误)
简要说明(应 Fixer 的要求)
MATCH(A4,{0,1,2,3,4})
A4
将对数组中的值进行排序{0,1,2,3,4}
,因此任何这样的值0 <= A4 < 1
将返回 1;任何这样的值1 <= A4 < 2
将返回 2;依此类推。
INDEX({0,6,8,10},...
将获取从 接收的值MATCH
并从数组 中返回相应的值{0,6,8,10}
,因此如果MATCH
返回1
,INDEX
将返回(在本例中)0
;如果MATCH
返回2
,INDEX
将返回(在本例中)6
;等等
为了避免上述错误,可以扩展数组,例如:
=INDEX({"too low",0,6,8,10,"too high"},MATCH(A4,{-100,0,1,2,3,4,100}))
答案3
Excel 没有内置的函数用于IF
处理多个条件。不过,您可以使用多个嵌套IF
语句。一个非常基本的情况:
IF(condition1,IF(condition2,value_if_true2,value_if_false2),value_if_false1)
或者:
IF(condition1,value_if_truet1,IF(condition2,value_if_true2,value_if_false2))
IF
正如您在语句中看到的,您可以用另一个语句替换其中一个value_if_true
或两个,从而继续嵌套条件以实现您想要的结果。value_if_false
IF
这里有很好的例子和解释:
答案4
如果数字介于 0 和略小于 1(即 <1)之间,则为 0。
如果数字介于 1 和 2 以下,则为 6。
如果数字介于 2 和 3 以下,则为 8。
如果数字在 3 到 4 之间,则为 10。
有一个简单的方法,无需使用INDEX()
andMATCH()
或IFS()
嵌套IF()
。
查看您发布的公式,您正在测试单元格A4
,除了0
,结果遵循数学方程模式,(the integer of A4 × 2) + 4
因此请尝试以下操作
=IF(A4<1,0,(INT(A4)*2)+4))