MATCH 函数¶
一、函数概述¶
MATCH 是 Excel 中用于“查找某个值在指定区域中的相对位置”的函数。它不会直接返回对应的内容,而是返回位置序号(从 1 开始计数)。因此,MATCH 常用于:
- 与 INDEX 搭配实现灵活查找(INDEX + MATCH)
- 与 VLOOKUP/XLOOKUP 互补,用于定位列号/行号
- 动态定位数据范围(配合 OFFSET、INDEX 构造动态区域)
典型理解:MATCH = “找得到就告诉我它在第几个”。
二、基础语法¶
三、参数说明¶
| 参数 | 是否必填 | 含义 | 常见写法与说明 |
|---|---|---|---|
lookup_value |
是 | 要查找的值 | 可以是数字、文本、日期、单元格引用 |
lookup_array |
是 | 在哪里查找(单行或单列区域) | 通常为一列或一行,如 A2:A10 |
[match_type] |
否 | 匹配类型 | 0 精确匹配;1 近似匹配(默认);-1 近似匹配 |
match_type 取值规则(重点)¶
| match_type | 匹配逻辑 | 对数据排序要求 | 返回结果 |
|---|---|---|---|
0 |
精确匹配(支持通配符) | 无要求 | 返回第一个匹配项的位置 |
1 |
近似匹配:找小于等于 lookup_value 的最大值 | lookup_array 升序 | 返回对应位置;找不到时可能返回最后一个较小值的位置 |
-1 |
近似匹配:找大于等于 lookup_value 的最小值 | lookup_array 降序 | 返回对应位置 |
写 MATCH 时,最常用的是
0(精确匹配),更稳定、可控。
四、基础用法示范¶
下面用一个简单表举例(假设数据在 A1:B6):
| A列:姓名 | B列:成绩 |
|---|---|
| 张三 | 88 |
| 李四 | 92 |
| 王五 | 76 |
| 赵六 | 85 |
| 钱七 | 92 |
示例 1:精确匹配,返回位置序号¶
查找“王五”在 A2:A6 中是第几个:
返回:3(表示在 A2:A6 这个区域里,王五是第 3 个)
示例 2:查找单元格的值¶
假设 D2 输入要查的姓名(如“赵六”):
这样你修改 D2,就能动态返回位置。
示例 3:与 INDEX 搭配返回对应值¶
想根据姓名返回成绩(比 VLOOKUP 更灵活):
逻辑:
- MATCH 先找到“李四”在 A2:A6 的位置
- INDEX 再用这个位置去 B2:B6 取成绩
示例 4:匹配列标题,返回列号¶
假设表头在 A1:E1,想找“销售额”在第几列:
返回的序号可用于 INDEX、CHOOSE、VLOOKUP 的列序号等场景。
示例 5:通配符匹配(match_type=0)¶
假设要找“张”开头的第一个姓名:
*表示任意多个字符?表示任意单个字符
如果要匹配真实的 * 或 ?,可用 ~ 转义,例如 "a~*"。
示例 6:近似匹配,用于分档/区间定位¶
假设 A2:A6 为升序分数线:0, 60, 70, 80, 90
想判断某分数(如 85)落在哪个档位,可先定位最后一个 ≤ 85 的分数线位置:
返回位置后,再结合 INDEX 取对应档位名称(如“良好”等)。
五、总结¶
- MATCH 的核心作用:在一个单行/单列区域中查找值,并返回其相对位置序号(从 1 开始)。
- 最常用写法:
MATCH(查找值, 查找区域, 0)—— 精确匹配最稳妥。 - 高频组合:
INDEX + MATCH能实现按行/按列的灵活查找,避免 VLOOKUP 的“只能向右查”和“列插入易出错”等限制。 - 进阶用途:匹配表头找列号、通配符查找、近似匹配做分档定位等。