ARTICLE · 1129828
Excel INDEX+MATCH组合函数详解,比VLOOKUP更好用吗?
Excel INDEX+MATCH组合函数详解,比VLOOKUP更好用吗?
经常有人问:INDEX 加 MATCH 是不是比 VLOOKUP 更好用?结论先给:INDEX+MATCH 更灵活,能向左查找、插入列不易断链,但写法比 VLOOKUP 多一层;如果你的 Excel 或 WPS 版本支持 XLOOKUP,那它才是首选。下面从原理到写法讲清楚。
一、INDEX 和 MATCH 分别在做什么
这两个函数各管一件事,组合起来才是完整的查找动作:
- MATCH
:在一行或一列里找给定的值,返回它排在第几位。写法 =MATCH(查找值, 单行或单列区域, 0),最后那个 0 表示精确匹配。 - INDEX
:在指定区域里按“第几行、第几列”取值。写法 =INDEX(区域, 行号, 列号),只取一列数据时列号可以省略。
于是分工很清晰:MATCH 负责找位置,INDEX 负责按位置取数,组合起来就是 =INDEX(返回列, MATCH(查找值, 查找列, 0))。
二、一个例子写出完整公式
假设 A2 是姓名,数据区 B2:D100 中 B 列是姓名、C 列是部门、D 列是工资,现在要按姓名取工资:
输入 =INDEX(,选中要返回的整列 D2:D100,按 F4 锁定为$D$2:$D$100,输入英文逗号。继续输入 MATCH(,点一下 A2 作为查找值,输入逗号。选中查找列 B2:B100,按 F4 锁定为 $B$2:$B$100,输入逗号和 0,再补上两个右括号。回车得到 =INDEX($D$2:$D$100,MATCH(A2,$B$2:$B$100,0)),下拉填充到整列。
三、VLOOKUP 做不到的三件事
- 向左查找
:目标列在查找列左边时,VLOOKUP 必须重排区域或写数组运算,而这里只要把第一参数写成左边那一列即可。 - 插入列不断链
:VLOOKUP 的返回列号是硬编码的数字,中间插入一列就会取错;INDEX+MATCH 引用的是整列区域,插入列后结果不受影响。 - 多条件查找
:写成 =INDEX($D$2:$D$100,MATCH(1,($A$2:$A$100=F2)*($B$2:$B$100=G2),0)),在 Excel 2019 及以前需要按 Ctrl+Shift+Enter 输入数组公式,Excel 365 与 WPS 新版本直接回车即可。
四、三种查找方案对比
五、什么时候还是选 VLOOKUP
工具没有绝对的好坏,组合写法更适合结构会变的表格;如果只是固定模板里按编号取一次数,VLOOKUP 公式更短,同事也更容易看懂。选型可以按三条标准判断:
返回列在查找列右侧、表格结构基本不动,用 VLOOKUP 最快。 需要向左查、需要按两个条件查、经常插入新列,用 INDEX+MATCH。 版本支持且追求公式可读性,直接用 XLOOKUP,参数最少。
另外,无论用哪种方案,数据量大时都要把区域限定在真实数据范围内,整列引用会明显拖慢表格的打开和重算速度。
六、常见问题
结果返回 #N/A,先确认 MATCH 的第三参数写了 0,漏写会变成近似匹配。 INDEX 的第一参数要写返回列本身,不要和查找列写反。 需要一次返回多列内容时,把 INDEX 区域写成整块数据区,再补上列号参数。 数据量很大时,把区域限定在真实数据范围内,比整列引用更快。