match 函数是 Excel 经典查找类函数,核心作用是在一行或者一列区域里面查找指定内容,返回这个内容在区域当中的相对位置序号,它本身只返回位置数字,不直接返回单元格内容,日常经常搭配 index 函数组合使用,也就是 index 加 match 经典双查,用来实现双向查找,它一共包含 3 个参数,重点就是第三参数匹配类型,0 精确匹配 1 升序近似匹配 -1 降序近似匹配,很多新手报错 N/A,大多是匹配类型选错,或者数据源排序不满足近似匹配要求,掌握 match 函数之后,做动态定位 交叉查询 动态列号行号会非常方便。
函数基础语法
=MATCH(lookup_value, lookup_array, [match_type])
| 参数 | 含义 |
|---|---|
| lookup_value | 要查找的值 |
| lookup_array | 查找区域,必须是单行或者单列,不能是多行多列整块区域 |
| match_type | 匹配类型,可选,默认是 1 |
match_type 三种模式详解
| 取值 | 名称 | 要求 | 说明 |
|---|---|---|---|
| 0 | 精确匹配 | 不需要排序 | 找到第一个完全相等的值,找不到返回 #N/A,最常用 |
| 1 | 升序近似匹配 | 查找区域必须从小到大升序 | 查找小于等于查找值的最大值 |
| -1 | 降序近似匹配 | 查找区域必须从大到小降序 | 查找大于等于查找值的最小值 |
基础示例
示例 1 精确匹配
A 列:苹果 香蕉 橙子
公式 =MATCH("香蕉",A1:A3,0)
结果是 2,因为香蕉在这个区域排第 2 位
示例 2 近似匹配
A 列升序 10 20 30 40
公式 =MATCH(25,A1:A4,1)
结果是 2,找到小于等于 25 的最大值也就是 20,位置是 2
index+match 经典组合
match 负责拿到行号或者列号,index 根据这个位置取出对应单元格内容
公式示例
=INDEX(B1:B10,MATCH("张三",A1:A10,0))
含义:先 match 找到张三在 A 列的位置,再用 index 取出 B 列对应行的数据,这个组合优势比 vlookup 更灵活,可以左右双向查找,不受查找列必须在最左边的限制
高频错误清单
1 N/A:精确匹配找不到目标,或者近似匹配没有符合条件数据
2 VALUE!:lookup_array 选成多行多列区域,match 只支持单行单列
3 N/A 近似匹配报错:区域没有按要求升序或者降序排列
4 查找值带空格,肉眼看起来一样,实际匹配失败,这是非常隐蔽的坑
拓展要点
match 支持模糊通配符,配合精确匹配 0 的时候,可以使用 和?
示例 =MATCH("张",A1:A10,0) 查找第一个姓张的数据
match 返回的是相对位置,不是工作表真实行号,比如查找区域是 A5:A10,命中第一个单元格 A5,match 返回结果是 1,不是 5,这点是新手最容易混淆的关键点
【常见问题】
问题 1 match 函数第三参数 0 是什么意思
回答 1 match 函数第三参数 0 代表精确匹配,match 函数这个模式不需要数据源排序,也是日常使用最多的 match 函数模式,找不到内容会返回 N/A。
问题 2 match 函数为什么返回 N/A
回答 1 match 函数出现 N/A 常见原因是目标值不存在,或者 match 函数近似匹配模式下区域排序不符合要求,也有可能单元格存在隐藏空格。
问题 3 match 函数可以和 vlookup 互换吗
回答 1 match 函数不能完全替代 vlookup,match 函数只返回位置序号,match 函数一般搭配 index 来实现取值,和 vlookup 功能类似但是逻辑不一样。
问题 4 match 函数返回的是真实行号吗
回答 1 match 函数返回的是所选区域内部的相对位置,match 函数返回值不是工作表原始行号,这个是 match 函数很重要的特点。
【免责申明】
本内容仅为 match 函数教学科普,WPS Excel 不同版本函数细节基本一致,部分新版动态数组函数场景会有细微差异,实际使用以软件版本为准。


