判断数字所在的区间并返回对应的值,在学生成绩等级判定,计算销售提成,员工等级评定等场景中有广泛的应用。
以根据学生成绩判断等级为例介绍3个类型5个解决方案,其中首推XLOOKUP。
IFS/IF 逻辑判定
=IFS(B2<60,"不及格",B2<80,"中等",
B2<90,"良好",B2<100,"优秀")
IFS中根据条件设置对应等级即可。
优点是逻辑清晰,便于书写。
缺点是条件数量较多时公式长,耗时长。
IFS判定
=IF(B2<60,"不及格",IF(B2<80,"中等",
IF(B2<90,"良好","优秀")))
IF嵌套需要对IF函数有一定的理解,逻辑上不如IFS清晰。
IF嵌套
VLOOKUP/XLOOKUP查询
=VLOOKUP(B2,G:H,2,TRUE)
VLOOKUP模糊匹配是过去几十年中解决这类问题的中坚力量,需要在辅助列按升序列出区间下限,同时将第四参数要设置为TRUE或数字”1”.
模糊匹配的关键逻辑是:如果找不到查找值,则返回小于查找值的最大值。如在{0,60,80,90}找不到79时,则返回小于79的最大值60对应的“中等”。
VLOOKUP模糊匹配
=XLOOKUP(B2,G:G,H:H,,-1)
XLOOKUP第五参数设置为”-1“表示精确匹配下一个较小的项,如在{60,90,0,80}中找不到79时,则返回比79小的60对应的“中等”。
逻辑上与VLOOKUP类似,优点是辅助列数据无需按升序排列。
XLOOKUP查询
=XLOOKUP(B2,G:G,H:H,,1)
也可以将区间上限提取出来作为辅助列,但同时需要XLOOKUP第五参数设置为”1”,表示“精确匹配下一个较大的项“。如在{60,90,0,80}中找不到79时,则返回比79大的80对应的“中等”。
XLOOKUP查询
INDEX+MATCH 定位引用
=INDEX($H$2:$H$5,MATCH
(B2,$G$2:$G$5,1))
同样需要按升序排列辅助列,MATCH第三参数设置为”1”时查找小于或等于查找值的最大值。
IMATCH定位引用
总而言之,XLOOKUP的辅助列可以用上限数据也可以用下限数据,且没有排序要求,给它内定个冠军。
我话说完,谁赞成?谁反对?