你是不是遇到过这些情况:
想根据“姓名”查找“工号”,但VLOOKUP只能向右查,报错!
想同时根据“产品”和“月份”查销量,VLOOKUP做不到……
插入一列后,VLOOKUP的第三参数(第几列)又要手动改,烦不烦?
今天讲 INDEX + MATCH 组合 —— 比VLOOKUP更灵活、更强大的查找方案。
一个找位置,一个取内容,配合起来可以上下左右任意查,而且不受插入列影响。
一、先认识两个函数
MATCH:查找位置
=MATCH(找什么, 在哪找, 0)
返回要找的内容在区域中的第几个位置(数字)。
INDEX:根据位置返回值
=INDEX(区域, 第几行, [第几列])
根据行号和列号,从区域中取出对应的内容。
组合原理:用MATCH找到行号(或列号),再交给INDEX取数。
二、案例1:反向查找(根据姓名查工号)—— VLOOKUP的死穴
场景:A列工号,B列姓名。你想根据姓名查工号(从右向左查)。
数据:
| A | B |
|---|---|
| 工号 | 姓名 |
| 1001 | 张三 |
| 1002 | 李四 |
公式:=INDEX(A:A, MATCH("李四", B:B, 0))
MATCH("李四", B:B, 0)→ 姓名在B列第3行 → 返回3INDEX(A:A, 3)→ 取A列第3行的值 →1002
✅ 轻松实现向左查找,VLOOKUP做不到。
三、案例2:多条件查找(根据产品和月份查销量)
场景:根据“产品”和“月份”两个条件,从交叉表中找到销量。
数据:A列产品,第1行月份,中间是销量。
| A | B | C | D |
|---|---|---|---|
| 产品 | 1月 | 2月 | 3月 |
| A | 100 | 150 | 200 |
| B | 120 | 160 | 180 |
查找“B产品、2月”的销量。
公式:=INDEX(B2:D3, MATCH("B", A2:A3, 0), MATCH("2月", B1:D1, 0))
第一个MATCH找产品在A列的行号 → 2
第二个MATCH找月份在第1行的列号 → 2
INDEX从B2:D3区域中取第2行、第2列的值 →
160
✅ 一个公式搞定二维交叉查询。
四、案例3:解决VLOOKUP插入列后失效的问题
用VLOOKUP时,如果在查找范围中间插入一列,第三参数(返回第几列)不会自动变,公式结果错乱。
用INDEX+MATCH就没有这个烦恼。
场景:根据姓名查找工资,工资列位置可能变化。
公式:=INDEX(工资列整列, MATCH("李四", 姓名列整列, 0))
即使你在A、B之间插入了新列,MATCH仍然正确找到“姓名”列的位置,INDEX也能从正确的“工资列”取值。公式不用改,结果永远对。
写在最后
INDEX+MATCH 是职场Excel高手的必备技能。
记住它的两大优势:
| 场景 | VLOOKUP | INDEX+MATCH |
|---|---|---|
| 向左查找 | ❌ 不行 | ✅ 轻松 |
| 多条件查找 | ❌ 麻烦 | ✅ 一个公式 |
| 插入列后 | ❌ 参数要改 | ✅ 自动适应 |
建议收藏,下次遇到复杂查找,直接上INDEX+MATCH。
觉得有用,点个“在看”吧~
—— 每天10秒,学一个Excel小技巧。
夜雨聆风