如下图,C列是同学的考试成绩,现在要在D列展现分数等级,E3:H13是评级规则。首先考虑到的是用if函数,但是用if要进行9层嵌套,非常麻烦。
![1611e65c3fe327060ef35e9fda4512c8.png](https://i-blog.csdnimg.cn/blog_migrate/51ccc486ef0ccd633ea2c013cafb109a.jpeg)
高效的办法是使用index+match函数的模糊匹配,可以在D4单元格输入公式:=INDEX(H4:H13,MATCH(C4,G4:G13,-1)),向下填充,就可以得到结果。
index函数的第一个参数是指定区域,第二个参数是相对位置,也就是match函数返回的值,意思是返回指定区域相对位置的值。match函数的第一个参数是查找值,第二个参数是查找区域,第三个参数-1代表模糊匹配。
match第三个参数为-1,前提要求是查找区域必须是降序,也就是数值由大到小,会返回比查找值大的最小的数值所在的位置,比如C4的值是88,会在G列进行查找比88大的最小值的位置,也就是89在G4:G13的相对位置2。2会作为index函数的第二个参数,也就是返回H4:H13第二个位置的值,也就是A。
我们也可以用vlookup函数的模糊匹配,前提要求是查找区域必须是升序,需要重新构造辅助区域,如下图:
![ea8a786c22aefde481c45c84d8b036db.png](https://i-blog.csdnimg.cn/blog_migrate/a24c6198a31f52b833ee94f8548d1314.jpeg)
可以在D4单元格输入公式:=VLOOKUP(C4,F3:H13,3,TRUE)
vlookup函数的第一个参数是查找值,第二个参数是查找区域,第三个参数是返回查找区域的第2列,第四个参数TRUE表示精确查找。
vlookup第四个参数为TRUE,要求查找区域是升序的,数值由小到大排序,会返回比查找值小的最大的数值所在的行,比如C4的值是88,在查找区域F列中,比88小的最大值是85,就返回85所在行的第三列,也就是H12的值A。
什么时候用F列的值,什么使用用G列的值,要根据具体情况确定。
如果有帮助,帮忙给个赞和关注哈~,感谢!