为什么你需要学习INDEX+MATCH
用了十年Excel,我见过太多人死磕VLOOKUP。遇到向左查找就抓瞎,数据量大时表格卡得像蜗牛,还不知道问题出在哪。
INDEX+MATCH这个组合,老手都在用,新手却很少碰。原因很简单:看起来比VLOOKUP复杂。但说实话,学会之后你会发现,它反而更直观,也更灵活。
今天这篇文章,就把这个组合彻底讲清楚。
---
先搞懂两个函数各自干什么
MATCH函数:找位置
MATCH的作用很简单——告诉你某个值在区域里排第几个。
参数说明:查找值:你要找的内容 查找区域:去哪里找(只能是单行或单列) 匹配方式:0表示精确匹配,1表示小于等于,-1表示大于等于 实际例子:
假设A列是员工姓名,你要找"张三"在第几行:
=MATCH("张三", A:A, 0)
返回结果是行号,比如5。注意这是相对于查找区域的位置,不是工作表的绝对行号。
快捷操作:
点击要放结果的单元格 输入 =MATCH( 点击"张三"所在单元格,或直接输入 "张三" 输入逗号,选中A列 输入 ,0)
回车 常见错误:忘记写第三个参数0,默认变成模糊匹配,结果可能错 查找区域选了多列,报错——MATCH只能查单行或单列 ---
INDEX函数:按位置取值
INDEX的作用相反——告诉你某个位置上的值是什么。
语法:=INDEX(区域, 行号, 列号)参数说明:区域:你的数据范围 行号:取第几行的值 列号:取第几列的值(可省略,单列时不需要)
实际例子:A列是姓名,B列是部门。你要取第5行的姓名:
=INDEX(A:A, 5)
要取第5行的部门:
=INDEX(B:B, 5)
快捷操作:
点击目标单元格 输入 =INDEX( 选中A列 输入逗号,再输入行号(或点击存放行号的单元格) 输入 ) 回车
---
两个函数组合起来
现在把两个函数连起来用,威力就出来了。
核心逻辑:MATCH找到位置 → INDEX按位置取值
经典组合公式:=INDEX(结果列, MATCH(查找值, 查找列, 0))实战案例:根据员工姓名查部门
假设数据如下:
A列:员工姓名 B列:部门 C列:入职日期 你要根据姓名查部门,在E2单元格输入姓名"张三",F2放结果。
公式:=INDEX(B:B, MATCH(E2, A:A, 0))拆解理解:MATCH(E2, A:A, 0) → 找到"张三"在A列排第几,假设返回5 INDEX(B:B, 5) → 取B列第5行的值,就是部门名称
操作步骤:
在F2单元格输入 =INDEX( 点击B列标题,选中整列 输入逗号,然后输入 MATCH( 点击E2单元格 输入逗号,点击A列标题 输入 ,0)) 回车
---
INDEX+MATCH比VLOOKUP强在哪
第一:可以向左查找
VLOOKUP有个致命限制:查找值必须在查找范围的第一列。这意味着你没法向左查。
举个例子:
B列是部门 C列是姓名 你要根据姓名查部门
VLOOKUP做不到,因为姓名在部门右边。
INDEX+MATCH完全不受限制:
=INDEX(B:B, MATCH("张三", C:C, 0))
查找列和结果列谁左谁右,根本无所谓。
第二:插入删除列不会报错
VLOOKUP的第三个参数是列号数字,比如查第三列就写3。问题来了:你在中间插了一列,原来的第三列变成第四列,公式就错了。
INDEX+MATCH引用的是整列,插入删除列不影响公式,自动适应。
第三:计算速度更快
数据量小的时候感觉不到,几万行数据时差距明显。VLOOKUP每次都要扫描整个查找范围,INDEX+MATCH的MATCH只找一次定位,INDEX直接取值,效率高很多。
第四:支持复杂查找
MATCH的第三个参数不只是精确匹配,还能做区间查找。配合排序好的数据,可以找小于等于某值的最大值,或大于等于某值的最小值。这个用法在阶梯计费、成绩等级划分时特别实用。
---
进阶用法:双向查找
INDEX+MATCH还能做VLOOKUP完全做不到的事:同时按行和列查找。
案例:查找某员工某月的销售额
数据结构:
A列是员工姓名(从A2开始) 第一行是月份(从B1开始) 中间是销售额数据 你要查"李四"在"3月"的销售额。
公式:=INDEX(B2:M10, MATCH("李四", A2:A10, 0), MATCH("3月", B1:M1, 0))
拆解:第一个MATCH找"李四"在第几行 第二个MATCH找"3月"在第几列 INDEX按行号列号定位单元格
这个技巧做交叉表查询非常实用。
---
常见问题和注意事项
1. 返回#N/A错误
原因通常是找不到匹配值。检查以下几点:
查找值和查找列的数据类型是否一致(文本和数字是两回事) 是否有多余空格,用TRIM函数清理 查找区域是否选对了
2. 返回#REF!错误
说明行号或列号超出范围。检查MATCH返回的值是否合理,可能是查找区域选错了。
3. 下拉公式时引用出错
记住用绝对引用或整列引用。比如 $A:$A 或 $A$2:$A$100,不然下拉时区域会偏移。
4. 数据量大时仍然慢
虽然比VLOOKUP快,但几万行数据配合复杂公式还是会卡。考虑用辅助列简化公式,或者换Power Query处理。
5. 多条件查找怎么办
可以用数组公式:
=INDEX(C:C, MATCH(1, (A:A=E2)*(B:B=F2), 0))
这个公式同时匹配A列等于E2、B列等于F2两个条件。输入后按Ctrl+Shift+Enter确认(Excel 2019及以后版本直接回车即可)。
---
实操练习建议
找一份你工作中的实际数据,试着把现有的VLOOKUP公式改成INDEX+MATCH。
具体步骤:
打开一个用VLOOKUP的表格找到VLOOKUP公式所在单元格分析原来的查找列和结果列用INDEX+MATCH重写公式对比结果是否一致
改几个公式下来,基本就熟练了。
---
写在最后
INDEX+MATCH不是什么高深技巧,就是两个简单函数的组合。花半小时学会,以后遇到VLOOKUP搞不定的情况,不用再绕弯路。
一句话总结:INDEX+MATCH能做的事VLOOKUP不一定能做,VLOOKUP能做的事INDEX+MATCH都能做,而且更快更稳。---
夜雨聆风