跳转至

MATCH 函数

一、函数概述

MATCH 是 Excel 中用于“查找某个值在指定区域中的相对位置”的函数。它不会直接返回对应的内容,而是返回位置序号(从 1 开始计数)。因此,MATCH 常用于:

  • INDEX 搭配实现灵活查找(INDEX + MATCH)
  • VLOOKUP/XLOOKUP 互补,用于定位列号/行号
  • 动态定位数据范围(配合 OFFSET、INDEX 构造动态区域)

典型理解:MATCH = “找得到就告诉我它在第几个”。


二、基础语法

MATCH(lookup_value, lookup_array, [match_type])

三、参数说明

参数 是否必填 含义 常见写法与说明
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 中是第几个:

=MATCH("王五", A2:A6, 0)

返回:3(表示在 A2:A6 这个区域里,王五是第 3 个)


示例 2:查找单元格的值

假设 D2 输入要查的姓名(如“赵六”):

=MATCH(D2, A2:A6, 0)

这样你修改 D2,就能动态返回位置。


示例 3:与 INDEX 搭配返回对应值

想根据姓名返回成绩(比 VLOOKUP 更灵活):

=INDEX(B2:B6, MATCH("李四", A2:A6, 0))

逻辑:

  • MATCH 先找到“李四”在 A2:A6 的位置
  • INDEX 再用这个位置去 B2:B6 取成绩

示例 4:匹配列标题,返回列号

假设表头在 A1:E1,想找“销售额”在第几列:

=MATCH("销售额", A1:E1, 0)

返回的序号可用于 INDEX、CHOOSE、VLOOKUP 的列序号等场景。


示例 5:通配符匹配(match_type=0)

假设要找“张”开头的第一个姓名:

=MATCH("张*", A2:A6, 0)
  • * 表示任意多个字符
  • ? 表示任意单个字符

如果要匹配真实的 *?,可用 ~ 转义,例如 "a~*"


示例 6:近似匹配,用于分档/区间定位

假设 A2:A6 为升序分数线:0, 60, 70, 80, 90 想判断某分数(如 85)落在哪个档位,可先定位最后一个 ≤ 85 的分数线位置:

=MATCH(85, A2:A6, 1)

返回位置后,再结合 INDEX 取对应档位名称(如“良好”等)。


五、总结

  • MATCH 的核心作用:在一个单行/单列区域中查找值,并返回其相对位置序号(从 1 开始)
  • 最常用写法MATCH(查找值, 查找区域, 0) —— 精确匹配最稳妥。
  • 高频组合INDEX + MATCH 能实现按行/按列的灵活查找,避免 VLOOKUP 的“只能向右查”和“列插入易出错”等限制。
  • 进阶用途:匹配表头找列号、通配符查找、近似匹配做分档定位等。