EP03. “INDEX and MATCH INDEX 与 MATCH 组合查找”
🔒 登录后可标记已读- INDEX+MATCH 是比 VLOOKUP 更灵活的查找组合
- MATCH 负责「找位置」,INDEX 负责「根据位置取值」
- 两者搭配可以突破 VLOOKUP 只能向右查找的限制
- 前置知识建议先看过 EP01 的 VLOOKUP
- 学完能理解为什么很多进阶用户更喜欢用 INDEX+MATCH 而不是 VLOOKUP
重点内容
函数速查
| 函数 | 语法 | 用途 | 例子 |
|---|---|---|---|
| MATCH | =MATCH(lookup_value, lookup_array, [match_type]) | 返回某个值在范围里的位置(第几个) | =MATCH(53,B3:B9,0) → 5 |
| INDEX | =INDEX(array, row_num) | 返回范围中指定位置的值 | =INDEX(E3:E9,5) |
VLOOKUP 和 INDEX+MATCH 怎么选
| 场景 | 用法 | 备注 |
|---|---|---|
| 查找列在最左边,向右取值 | VLOOKUP | 写法最简单 |
| 查找列不在最左边(要向左查找) | INDEX+MATCH | VLOOKUP 做不到,见 EP07 |
| 表格中间插入/删除列 | INDEX+MATCH | col_index_num 写死的 VLOOKUP 容易跟着错位 |
| 需要用两个条件一起查找 | INDEX+MATCH | 见 EP10 双列查找 |
MATCH 函数:找位置
=MATCH(53,B3:B9,0),在范围 B3:B9 里查找值 53,返回它是第几个(结果是 5)。第三参数设为 0 表示精确匹配。
INDEX 函数:按位置取值
=INDEX(E3:E9,5),在一维范围 E3:E9 里,返回第 5 个位置的值。
组合成 INDEX+MATCH
把 INDEX 里手动写的位置数字(5)换成 MATCH 函数,让位置动态查找:
=INDEX(E3:E9,MATCH(53,B3:B9,0))
比如要查 ID 为 53 的员工薪资:MATCH 先在 ID 列找到 53 的位置,INDEX 再从薪资列取出对应位置的值。
[截图:员工 ID 列(B3:B9)和薪资列(E3:E9)的示例数据表,标出 MATCH 找到的行位置和 INDEX 最终取值的单元格]
进阶应用(后续笔记会分别展开)
- 双向查找(Two-way Lookup,见 EP04):在二维范围里同时按行和列查找
- 区分大小写查找(Case-sensitive Lookup,见 EP06):用 INDEX、MATCH 搭配 EXACT
- 左向查找(Left Lookup,见 EP07):突破 VLOOKUP 只能向右查找的限制
- 双列查找(Two-column Lookup,见 EP10):同时依据两个条件查找
- 最接近匹配(Closest Match,见 EP11):用 INDEX、MATCH、ABS、MIN 找最接近的值
学完你会
- ✅ 能用 MATCH 找出一个值在范围里的位置,再用 INDEX 按位置取值
- ✅ 能组合 INDEX+MATCH 做出比 VLOOKUP 更灵活的查找
- ✅ 能判断什么场景该用 VLOOKUP,什么场景要改用 INDEX+MATCH
常见错误
- MATCH 的第三参数忘记设成 0,导致做的是近似匹配而不是精确匹配,结果找错位置
- INDEX 和 MATCH 用的范围行数对不上(比如 INDEX 用 E3:E9 但 MATCH 用 B2:B9),导致取到位置错位的值
- 误以为 INDEX+MATCH 只是 VLOOKUP 的复杂版,忽略了它最大的优势——可以向左查找、可以用两个条件联合查找
Sources
Blog / Website: