WPS表格常用查找函数终极指南4——INDEX+MATCH组合
在日常的数据处理工作当中,经常需要对成百上千行的数据进行查询,掌握这几个函数,让你在数据查询中游刃有余。
本系列将详细介绍六个最常用的查找引用函数:VLOOKUP、HLOOKUP、XLOOKUP、LOOKUP、INDEX、MATCH,通过通俗易懂的案例,帮助你理解它们各自的特点和适用场景。本系列共四期,本期为第四期,介绍INDEX与MATCH的组合使用。
WPS表格常用查找函数终极指南1——VLOOKUP与HLOOKUP
WPS表格常用查找函数终极指南2——XLOOKUP与LOOKUP
WPS表格常用查找函数终极指南4——INDEX+MATCH组合
7️⃣INDEX+MATCH——最经典的黄金搭档,查询界的神雕侠侣
单独看INDEX,它只是个“坐标导航仪”;单独看MATCH,它只是个“位置探测器”。但把这两个函数组合在一起,它们就成了查询界所向披靡的神雕侠侣!
INDEX + MATCH = 北斗导航 + 位置探测器 = 任意方向、任意条件的终极查询组合
组合拳的基本公式:
=INDEX(数组, MATCH(查找值, 查找列, 0), [MATCH(查找值, 查找行, 0)])
参数详解:
第一参数(数组):要返回结果的数据区域。可以是一列、一行,也可以是多行多列的区域。就像地图上的“宝藏区域”,告诉函数你要在哪里找“宝藏”。
第二参数(第一个MATCH):行定位器。这个MATCH函数负责在查找列中精确锁定目标值所在的行位置。它的查找值就是要找的内容,查找列就是包含这些内容的区域,最后的0代表精确匹配。
第三参数(第二个MATCH):列定位器。当你的数据区域是多行多列时,这个MATCH负责锁定列位置。它可以在查找行中找到目标值所在的列。如果省略,则默认为1或直接使用单列/单行区域。
- INDEX+MATCH交叉查询
还是那个熟悉的学生成绩表,这次我们想通过指定的姓名和科目查询成绩,如下图:
B9单元格公式:
=INDEX(B1:E5,MATCH(B7,B1:B5,0),MATCH(B8,B1:E1,0))
公式拆解:
这个公式就像一个精密的坐标定位系统,分三步走:
第一步:MATCH(B7, B1:B5, 0)确定行位置
找什么:B7单元格的姓名“图图”
在哪找:B1:B5(姓名列)
怎么找:0(精确匹配)
结果:返回 2(因为“图图”在B1:B5这个区域中的第2行,注意这是区域内的相对位置,不是工作表的第2行)
第二步:MATCH(B8, B1:E1, 0)确定列位置
找什么:B8单元格的科目“体育”
在哪找:B1:E1(科目标题行,注意这里是第一行,不是第二行)
怎么找:0(精确匹配)
结果:返回 4(因为“体育”在B1:E1这个区域中的第4列,即E列)
第三步:INDEX(B1:E5, 2, 4)定位单元格
在哪儿取:B1:E5(整个成绩表区域)
取第几行:2(第一步告诉它,图图在第2行)
取第几列:4(第二步告诉它,体育在第4列)
最终结果:返回E2单元格的值 88
整个过程就像:你先告诉MATCH去问“图图在第几排?”,再问“体育在第几列?”,两个MATCH把坐标(2排,4列)带回来,INDEX根据这个坐标,去成绩表里把对应的成绩取出来。
关键理解:
MATCH返回的是在查找区域内的相对位置,不是工作表的绝对行号/列号
两个MATCH的查找区域必须与INDEX的数据区域对齐:
行查找区域(B1:B5)必须与INDEX区域的行头对应
列查找区域(B1:E1)必须与INDEX区域的列头对应
这样返回的行列序号才能准确定位到INDEX区域中的单元格
- INDEX+MATCH多条件查询
有时我们查询的数据需要有多个条件才能精准定位,比如学校有很多年级和班级,每个班级都有固定的班主任,如果我们需要查询哪个年级哪个班级的班主任是谁,这个时候就可以通过“连接符”轻松实现多条件查询。
举个栗子🌰:学校有一张班主任安排表,包含了“年级”、“班级”、和“班主任”三列数据(分别为A至C列)。由于不同年级都有相同的班级(比如都有1班),因此需要同时通过“年级”和“班级”两个条件,才能精准定位到对应的班主任老师,如下图:
F7单元格公式:
=INDEX($C$2:$C$12,MATCH($F$5&$F$6,$A$2:$A$12&$B$2:$B$12,0))
公式拆解:
第一步:构建查找值与查找数组
$F$5&$F$6:将需要查询的年级和班级拼接为一个新的字符串,这里是"二年级"&"1班"="二年级1班"。
$A$2:$A$12&$B$2:$B$12:将数据源中的年级和班级逐行进行拼接,形成"一年级1班"、"一年级2班"……的形式,方便查询。
第二步:MATCH函数确定行位置
在构建的查找数组中查询构建的查找值,找到"二年级1班"所在位置为第6行A7:B7。
第三步:INDEX函数定位单元格
确定了行位置,在$C$2:$C$12区域查找第6行,得到二年级1班的班主任为吴老师。
注意这里的&连接符是将单元格文本按行进行连接,假如原本就有已经拼接好,或者查询的内容是已经拼接好的内容呢,那这里其实只需要将没有拼接的内容按照已经拼接的形式拼接,按同样的方式进行查找就可,如下图:
F7单元格公式:
=INDEX($C$2:$C$12,MATCH($F$6,$A$2:$A$12&"的"&$B$2:$B$12,0))
因为$F$6中的查找值已经将年级和班级给拼接起来了,但中间多了一个“的”,因此我们需要构造的查找函数$A$2:$A$12&"的"&$B$2:$B$12也应该将A列与B列用“的”连接起来。
注意:案例中并没有一年级6班,如果查询值为一年级6班,则会返回#N/A错误,我们只需要在公式最外面嵌套一个IFERROR函数,定义错误值显示内容即可。
- INDEX+MATCH制作动态下拉菜单
有时我们会有这样的需求,先选择省份,后面再选择这个省份对应的城市;先选择部门,后面再需要选择这个部门的员工。这个就是动态下拉菜单。
首先我们在天地图官网获取到了全国的省市县行政区划名称及编码对照表,我们根据这个表制作一个三级联动的下拉菜单。表中B列为省级行政区(含省、自治区、直辖市、特别行政区),D列为市级行政区(含地级市、自治州、地区、盟等),F列为县级行政区(含市辖区、县级市、县、自治县、旗等)。数据已按省级、市级、县级行政区划层级进行排序,同一市级行政区划下的所有县级单位连续排列。点击此处获取案例文件
- 第一级:省下拉菜单
选中A2单元格,点击【数据】→「有效性」,设置「允许」为“序列”,来源选择省级行政区划所在列。
- 第二级:市下拉菜单
根据 A2 单元格选中的省,动态显示该省对应的所有市。实现分为两步:
第一步:定义一个名称,使其能随省的变化自动定位对应的市区域;
第二步:设置数据验证,来源指向该名称。
在写公式前,不妨先回顾一下上期内容。我们用 INDEX 制作动态图表时的核心思路是:先用 INDEX 定位到数据区域的第一行,再用 INDEX 定位到最后一行,最后用冒号 : 将两者连接起来,从而构建出一个会随着数据增加而自动扩展的动态区域。
这里我们沿用同样的思路:先用 MATCH 确定某个省在数据源中的起始位置,再用 COUNTIF 统计该省出现的次数来确定结束位置,最后用冒号 : 将两者连接,即可返回该省对应的完整市列表区域。(原公式比较长,这里简写引用单元格名称):
=INDEX(所有市,MATCH(指定省,所有省,0)):INDEX(所有市,MATCH(指定省,所有省,0)+COUNTIF(所有省,指定省)-1)
公式拆解:
MATCH(指定省,所有省,0):查找指定省在所有省中的第一个位置
COUNTIF(所有省,指定省):查找指定省在所有省中有多少个
第一个INDEX:确定引用的起始位置
第二个INDEX:确定引用的结束位置,-1是因为:假设该省从第2行开始,共有3个市,那么结束行应该是第4行(2+3-1=4)
这样我们就写出了一个通过指定省查找其对应的市所在行,完整的公式是这样的:
=INDEX(行政区划!$D:$D,MATCH(三级菜单!$A$2,行政区划!$B:$B,0)):INDEX(行政区划!$D:$D,MATCH(三级菜单!$A$2,行政区划!$B:$B,0)+COUNTIF(行政区划!$B:$B,三级菜单!$A$2)-1)
新建一个名为“市列表”的名称,将该公式复制到该名称的引用位置,设置B2单元格数据有效性来源为该名称,即可制作好第二级下拉菜单。操作步骤如下图:
- 第三级:县下拉菜单
操作过程与第二级菜单完全一致,只需修改公式:将省所在列改为市所在列,市所在列改为县所在列,通过市来确定县的范围。最终效果如下:
总结一下INDEX+MATCH制作下拉菜单的核心思路是:
MATCH 定位区域:使用 MATCH 找到符合条件的第一个值所在位置,再结合 COUNTIF 确定符合条件的最后一个值的位置,从而界定整个动态区域的范围。
INDEX 返回区域:利用 INDEX 分别返回区域的起始单元格和结束单元格,并通过 COUNTIF 计算区域大小,最终用冒号 : 连接,构建出完整的动态区域。
数据验证引用:在数据验证的“序列”来源中,直接引用上述定义的动态区域名称,即可实现下拉菜单的联动更新。
- 小结:为什么INDEX+MATCH被称为“神雕侠侣”?
VS VLOOKUP:突破三大先天局限
VLOOKUP作为查询函数的入门导师,有着与生俱来的三大限制:
方向限制:只能向右查询,查找值必须在首列,返回列必须在右侧
数量限制:一次只能返回一个数据,多列查询需要写多个公式
列序数固定:第三参数是硬编码的数字,插入或删除列后公式直接出错
而INDEX+MATCH彻底打破了这些枷锁:
✅ 任意方向:向左、向上、向右、向下,想怎么查就怎么查
✅ 批量返回:配合数组可实现多列同时查询
✅ 动态找列:用MATCH自动识别列位置,表格结构调整也能从容应对
VS XLOOKUP:经典与时代的对话
XLOOKUP确实强大,一个函数集成了万千宠爱,但它有个无法回避的门槛:版本限制。
XLOOKUP:需要在WPS 2021或Excel 2021及以上的新版软件中运行,低版本用户只能望洋兴叹。如果你需要把表格发给客户、领导或协作方,对方的版本不支持,再优雅的公式也会变成一堆醒目的#NAME?错误。
INDEX+MATCH:在XLOOKUP诞生之前就是查询界的黄金组合,全版本通用,只要有表格软件,它就能稳定运行。
一句话总结:XLOOKUP是面向未来的"概念车",功能炫酷但有路况要求;INDEX+MATCH是久经考验的"经典款",任何环境都能平稳行驶。
虽然XLOOKUP的出现让很多查询变得更简单,但在处理复杂报表、构建动态模板时,INDEX+MATCH这对黄金搭档依然是无数Excel老司机的首选。掌握了它们,你在数据查询的道路上就算是真正“毕业”了!
🎯总结:什么时候该找谁?
场景 | 找谁 |
新手入门,简单查找 | VLOOKUP |
任意方向,全能查找 | XLOOKUP |
表头在左边,数据横着排 | HLOOKUP |
成绩评级,区间划分 | LOOKUP |
需要精准定位某个坐标 | INDEX |
只想知道数据在第几行/列 | MATCH |
XLOOKUP搞不定的复杂查找 | INDEX+MATCH |
📢最后的话
WPS表格的函数就像武侠世界里的武功招式,VLOOKUP是入门基本功,XLOOKUP是绝世神功,而INDEX+MATCH就像是双剑合璧的必杀技。
不需要一口气全部掌握,先从VLOOKUP入手,遇到搞不定的场景时,再请出INDEX+MATCH这对神雕侠侣。
记住:函数是死的,思路是活的。掌握了这些工具,你就能在数据的江湖里,横行无忌!
WPS表格常用查找函数终极指南1——VLOOKUP与HLOOKUP

