INDEX-MATCH 组合完全指南:告别VLOOKUP的局限

63 阅读3分钟

作为Excel新手,你可能已经用过VLOOKUP,但今天我要教你一个更强大、更灵活的查找组合:INDEX + MATCH

先看一个实际案例

假设你有一张员工信息表:

员工ID姓名部门薪资
E001张三销售部8000
E002李四技术部12000
E003王五市场部9500
E004赵六技术部11000

现在我们需要根据员工ID查找对应的薪资

VLOOKUP的经典做法

=VLOOKUP("E003", A2:D5, 4, FALSE)

结果:  9500

缺点:

  1. 只能从左往右查
  2. 插入/删除列时需要手动调整列号
  3. 查找值必须在第一列

 INDEX-MATCH 解决方案

第一步:理解两个函数

MATCH函数 - 专门找位置

=MATCH(找什么, 在哪里找, 匹配类型)
  • 找什么:要查找的值(如"E003")
  • 在哪里找:查找范围(如A2:A5)
  • 匹配类型:0表示精确匹配

INDEX函数 - 根据位置返回值

=INDEX(返回哪个区域, 第几行, [第几列])
  • 返回哪个区域:包含你要返回值的数据区域
  • 第几行:数据所在的行号

第二步:组合起来使用

案例1:基本查找(代替VLOOKUP)

需求:  根据员工ID(E003)查薪资

=INDEX(D2:D5, MATCH("E003", A2:A5, 0))

分步解析:

  1. MATCH("E003", A2:A5, 0) → 在A2:A5中找"E003",返回位置3
  2. INDEX(D2:D5, 3) → 在D2:D5中取第3个值 → 9500

完整公式示例:

=INDEX($D$2:$D$5, MATCH(G2, $A$2:$A$5, 0))

(假设G2单元格输入要查找的ID)

第三步:实际应用场景

场景1:反向查找(VLOOKUP做不到!)

需求:  根据薪资找员工姓名

=INDEX(B2:B5, MATCH(12000, D2:D5, 0))

结果:  李四

场景2:双条件查找

假设表格增加"入职年份"列:

员工ID姓名部门入职年薪资
E001张三销售部20208000
E002李四技术部201912000
E003王五市场部20209500

需求:  找技术部、2019年入职的员工薪资

=INDEX(E2:E5, MATCH(1, (C2:C5="技术部")*(D2:D5=2019), 0))

数字 1 是整个双条件匹配的逻辑核心。它不是一个简单的数字,而是一个匹配目标,代表“两个条件同时为真”。

重要:  这是数组公式,输入后按 Ctrl+Shift+Enter

详细对比表

特性VLOOKUPINDEX-MATCH胜出方
查找方向只能从左向右任意方向INDEX-MATCH
列变动插入/删除列需调整列号自动适应INDEX-MATCH
性能大型数据较慢大型数据更快INDEX-MATCH
灵活性有限极高INDEX-MATCH
学习难度简单稍复杂VLOOKUP