Excel 公式

Excel INDEX+MATCH 查找怎么用(比 VLOOKUP 灵活)

更新于 2026-06-04 · 阅读约 7 分钟

VLOOKUP 只能从左往右找——想反过来找、或者怕中间插列把列号弄错,就该用 INDEX+MATCH 组合。本文先讲清两个函数各自做什么,再教你组合写法和实例,最后教你用超级表「关联列」点几下完成同样的查找,完全不用记函数。


超级表中按某列匹配两个表格、把数据带过来的示意
INDEX+MATCH 也是按一列查另一表——超级表里点选「关联列」即可。

VLOOKUP 的限制:为什么要学 INDEX+MATCH

如果你用过 VLOOKUP 匹配两个表格,一定遇到过这两个坑:

  • 只能从左往右找:查找列必须在返回列的左边,想从右列查左列,VLOOKUP 直接没辙。
  • 列号写死易错:=VLOOKUP(A2, B:D, 2, FALSE) 里的 2 是硬编码的,中间插一列,所有列号全错位,得手动一个个改。

INDEX+MATCH 组合正好解决这两个问题。理解它需要先分别弄清 MATCH 和 INDEX 各自是什么。

MATCH 函数:返回位置,不返回值

MATCH 的作用只有一件事:在一列(或一行)里找某个值,返回它在第几个位置

语法:=MATCH(查找值, 查找范围, 匹配类型)

第三个参数「匹配类型」几乎永远写 0,表示精确匹配。写 1-1 是近似匹配,日常查找很少用。

举例:员工信息表的 A 列是姓名,依次是张三、李四、王五。

=MATCH("李四", A:A, 0)

返回 2——李四在第 2 行(忽略表头则从数据行算起)。MATCH 只告诉你「在第几个」,不告诉你那一行的其他数据是什么。

INDEX 函数:按位置取值

INDEX 的作用也只有一件事:在一列(或区域)里,取第 N 个位置的值

语法:=INDEX(取值范围, 行号)(单列场景,不需要列号)

举例:员工信息表的 C 列是部门。

=INDEX(C:C, 2)

返回 C 列第 2 行的值——也就是李四的部门。

INDEX 只做「按位置取值」,至于位置怎么来——交给 MATCH 算。

INDEX+MATCH 组合写法、实例和优势

把两个函数套在一起,MATCH 算位置,INDEX 用这个位置去取值,就完成了「按某值查找、返回另一列结果」的全部工作:

=INDEX(返回列, MATCH(查找值, 查找列, 0))

具体实例:表 A 只有员工姓名(A 列),表 B 有姓名(B 列)和部门(D 列)。想把表 B 里每人的部门匹配到表 A。在表 A 的部门列写:

=INDEX(表B!D:D, MATCH(A2, 表B!B:B, 0))

解读:先用 MATCH 在表 B 的 B 列里找到 A2 的姓名在第几行;再用 INDEX 去表 B 的 D 列取那一行的部门。往下拖,整列匹配完毕。

比 VLOOKUP 的两个核心优势:

  • 反向查找没问题:查找列(B 列)在返回列(D 列)左边、右边、任意位置都行。VLOOKUP 要求查找列必须最左,INDEX+MATCH 无此限制——想从部门反查姓名也一样写。
  • 插列不会出错:INDEX 指向的是具体的一整列(D:D),不是「第几列」这样的数字偏移量。表 B 中间插再多列,公式里的 D:D 还是 D 列,结果不变。VLOOKUP 里的列号 2 是硬编码的,插列就全错。
痛点直说
INDEX+MATCH 确实比 VLOOKUP 灵活,但要记两个函数、嵌套写法、两个范围、还要一直保证两列行数对齐。数据量大时一样卡,数据有格式差异一样报 #N/A。公式能解决问题,但不是最省脑子的路。

更简单:超级表关联列,点几下搞定,不分左右

超级表(TableDI)把「按某列匹配两张表」做成了可视化操作——「关联列」功能本质上和 INDEX+MATCH 做的事一样,但不用写任何公式,也不用关心查找列在左还是在右。步骤:

  1. 两张表都导入超级表(Excel / CSV 直接拖进来)。
  2. 在「员工名单」表上新建一个关联列,选择「按 姓名 匹配 员工信息表」。
  3. 勾选要带过来的列(部门、年龄、工号——任意列,一次全选,不用一列写一次公式)。
  4. 完成。匹配结果自动填好。之后员工信息表一改,这边自动更新,不用重拖公式。

关联列不区分查找列在左还是在右——这和 INDEX+MATCH 的反向查找优势是一样的,只是你完全不需要记语法。想了解更通用的可视化计算方式,可以看用公式面板代替 VLOOKUP。如果你还在用 VLOOKUP 做最基础的匹配,也可以先读两个表格怎么匹配数据打好基础。

INDEX+MATCH 对比超级表关联列

对比项Excel INDEX+MATCH超级表关联列
能反向查找(右列查左列)能,不分方向
插列会不会出错不会,列名定位不会,字段名定位
需要记语法要记两个函数嵌套不需要,全程点选
同时匹配多列每列写一遍公式一次全勾
源表更新后不自动,要重拖自动更新
数据量大全表扫,易变慢跟手不卡

常见问题

INDEX+MATCH 比 VLOOKUP 好在哪?

两点核心优势:第一,反向查找——查找列可以在返回列的任意位置,不要求必须最左;第二,插列不坏公式——INDEX 直接引用列名而非列号偏移量,表格中间插列也不会让公式算错。代价是要记两个函数的嵌套写法,比 VLOOKUP 更复杂一些。

MATCH 第三参数 0 是什么意思?

MATCH 的第三参数控制匹配方式:0 表示精确匹配,只有完全相等才算找到;1 表示小于等于近似匹配(要求数据升序排列);-1 表示大于等于近似匹配(要求数据降序排列)。日常按某列值查找几乎永远用 0,写其他值容易得到意外结果。

INDEX+MATCH 能做多条件查找吗?

可以,但写法更复杂,需要用数组公式:=INDEX(返回列, MATCH(1, (条件列1=值1)*(条件列2=值2), 0)),在 Excel 中用 Ctrl+Shift+Enter 确认(新版 Excel 365 已不需要)。条件越多公式越难维护;在超级表里多条件匹配同样是点选操作,不用写数组公式。

不想再记 INDEX+MATCH 的嵌套语法?

免费下载超级表,关联列点几下完成同样的查找,支持任意方向,还能自动更新

免费下载(macOS / Windows)