我不确定该IF
功能是否是正确的启动功能,但问题是:
我有一个单元格Y8
,它显示不同的数字:
0,5,10,15,20,35,50
我需要输入一个返回文本值的公式,但我有 4 个参数。
我需要它返回以下内容:
如果它是......
- ...小于 10 = 1 级。
- ...10-19 之间 = 2 级。
- ...20:29 = 3 级
- ...30+ = 4 级。
使用该IF
函数,我只能根据不断变化的数字获得级别 1 或级别 2 的返回值。
我使用了以下公式:
=IF(Y8<=9, "Level 1", IF(Y8<="10:19", "Level 2"))
关于我可以使用什么公式来获取所有 4 个参数的返回值,您有什么想法吗?
答案1
有两种方法可以做到这一点,具体取决于您想要的彻底程度。
我个人更喜欢第一个例子:
=IF(Y8<=9, "Level 1", IF(Y8<=19, "Level 2", IF(Y8<=29 "Level 3", "Level 4")))
您不必担心将级别 2 定义为至少为 10,因为通过不匹配并返回“级别 1”,可以推断 Y8 必须大于 9。
如果您想要真正彻底地定义上限和下限,那么您可以做这样的事情,它还包括在 Y8 中的值不是数字的情况下返回警告/错误:
=IF(Y8<=9, "Level 1", IF(AND(Y8>=10, Y8<=19), "Level 2", IF(AND(Y8>=20, Y8<=29), "Level 3", IF(Y8>=30, "Level 4", "Not a number or some other error"))))
答案2
您可以将 CHOOSE 与 MATCH 结合使用
=CHOOSE(MATCH(Y8,{0,10,20,30}),"Level 1","Level 2","Level 3","Level 4")
如果您确实想要Level
一个数字,我们可以这样做:
="Level " & MATCH(Y8,{0,10,20,30})
答案3
Level
制作一个与每个阈值相对应的排序查找表:
Value Level
0 1
10 2
20 3
30 4
现在您可以使用简单的方法VLOOKUP
来获取Level
给定的任何值Value
,并且如果阈值需要更改,或者需要添加新的级别,则您的VLOOKUP
公式不需要更改 - 只需维护阈值表即可完成。
="Level " & VLOOKUP(theValue, theLookupTable, 2, TRUE)
注意TRUE
最后一个参数的参数,VLOOKUP
使用近似匹配而不是通常使用的完全符合模式。只要阈值按升序排序,VLOOKUP
就会返回仍然小于查找值的Level
最大值。Value
答案4
另一个解决方案是创建一个表,保存值的下限,然后使用 VLOOKUP
=VLOOKUP(lookup value, table array, col_index_num,[range lookup])
VLOOKUP 中的最后一个变量是“近似匹配”TRUE/FALSE
选择前者将使函数尝试用数字找到“最接近的值”,这会导致函数寻找任何“低于”表中输入的值。以 9 为例,最接近的结果是 0,并将返回“级别 1”。
这种方法还允许您随时增加选项和级别。