今天我们来分享Excel中两个非常强大的查找函数:Index Match和Vlookup。它们都能帮助我们快速找到需要的数据,但在处理错序查找时,它们的表现却有所不同。
例子背景
假设我们有一个学生信息表,里面包含了学生的学号、姓名、班级、年龄、性别和成绩。
Vlookup的错序查找挑战
挑战:由于Vlookup要求查找值必须位于查找区域的第一列,而在这个例子中,姓名并不在第一列,因此直接使用Vlookup会遇到困难。
解决方案(不推荐,因为需要调整数据):
- 将姓名列(C列)和成绩列(F列)复制到新的位置,使姓名列成为第一列。
- 使用Vlookup进行查找。但这种方法会破坏原始数据的布局,增加出错的风险。
更好的解决方案(使用IF函数):
(1)求班级:
输入公式:=VLOOKUP(B14,IF({1,0},$C$2:$C$11,$B$2:$B$11),2,0)
利用IF函数,重新创建一个数据区域,即把原表中的班级列跟姓名列进行调换,IF({1,0},$C$2:$C$11,$B$2:$B$11):这部分是一个数组公式,它实际上创建了一个两列的数组,第一列是$C$2:$C$11,第二列是$B$2:$B$11。再用vlookup 求出班级。
(2)求成绩
输入公式=VLOOKUP(B14,$C$2:$F$11,4,0)
但这种方法仍然不够直观和灵活。
Index Match的错序查找优势
优势:不受查找值位置限制,可以直接在任意列中查找。
步骤:
- 确定查找值:假设我们要查找“小刚”的成绩。
- 使用Match函数找到姓名在C列中的位置:输入=MATCH(B14,$C$2:$C$11,0)。这将返回“小刚”在姓名列(C列)中的位置,假设是3。
- 结合Index函数获取成绩:,输入=INDEX($A$2:$F$11,MATCH(B14,$C$2:$C$11,0),2)。
INDEX(区域,行,列 )表示在所有数据中查找第几行第几列。
MATCH("小刚",C:C,0)返回的是“小刚”在姓名列中的位置,即3。因此,整个公式的意思是:“在整个表中,找到第3行第2列的值”,也就是“小刚”的班级:3班。
求成绩,只要把公式中的列号改成6就可以。
为了不手动输入列号,只需再嵌套一个match函数:
=INDEX($A$2:$F$11,MATCH($B14,$C$2:$C$11,0),MATCH(C$13,$A$1:$F$1,0))
然后进行公式向右向左填充即可。
通过上面的例子,我们可以看到,在处理错序查找时,Vlookup虽然强大,但受到查找值位置的限制,而Index Match则更加灵活和方便。
评论 (0)