INDEX+MATCH:比VLOOKUP好用10倍的查找组合

INDEX+MATCH:比VLOOKUP好用10倍的查找组合

 次点击
12 分钟阅读

讲真,还在用VLOOKUP的兄弟,该升级了。


先说痛点

你有没有遇到过这种情况:

  • 要查找的值在第1列的右边,VLOOKUP当场罢工
  • 表格列数太多,数第几列数到眼瞎
  • 插入一列,所有公式崩了

如果你点头了,那INDEX+MATCH就是来拯救你的。


这两个函数是干嘛的?

MATCH:找位置

=MATCH(找什么, 在哪找, 匹配方式)

简单说,就是问Excel:"我要找的东西在第几个?"

参数 说明
找什么 你要查找的值
在哪找 单行或单列的范围
匹配方式 0=精确匹配,1=小于,-1=大于

例子:

=MATCH("张三", A2:A10, 0)

返回:"张三"在A2:A10中是第几个(假设是第3个,就返回3)

INDEX:取内容

=INDEX(范围, 第几行, [第几列])

简单说:"给我这个区域的第N行第M列的值"

例子:

=INDEX(B2:D10, 3, 2)

返回:B2:D10这个区域,第3行第2列的值


组合起来用:无敌了

核心思路: MATCH找到行号,INDEX根据行号取值。

=INDEX(要返回的区域, MATCH(查找值, 查找列, 0))

实战案例

假设有这样一个员工表:

工号 姓名 部门 工资
1001 张三 技术部 15000
1002 李四 销售部 12000
1003 王五 技术部 18000

需求:根据姓名查工号

VLOOKUP做不到(工号在左边),但INDEX+MATCH轻松搞定:

=INDEX(A2:A4, MATCH("李四", B2:B4, 0))

结果:1002


为什么它比VLOOKUP强?

功能 VLOOKUP INDEX+MATCH
查找方向 只能往右查 左右随便查
插入列影响 会崩 稳如老狗
大数据性能 更快
理解难度 简单 稍微绕一点

进阶玩法:双向查找

如果行和列都要动态查?

=INDEX(A1:D10, MATCH(行查找值, A列, 0), MATCH(列查找值, 第1行, 0))

实际例子:

根据"姓名"和"月份"查销售额:

=INDEX($B$2:$F$10, MATCH(A13,$A$2:$A$10,0), MATCH(B13,$B$1:$F$1,0))

我踩过的坑(你别踩)

  1. MATCH找不到会返回#N/A,记得用IFERROR包一下:

    =IFERROR(INDEX(...), "未找到")
    
  2. 范围要对应,MATCH查的是单列,INDEX的范围行数要匹配

  3. 绝对引用别忘了,复制公式时$符号是你的朋友


一句话总结

INDEX+MATCH = 灵活 + 强大 + 不会崩

学会了这个,你可以跟同事说:"VLOOKUP?那是上个时代的产物了。"

© 本文著作权归作者所有,未经许可不得转载使用。