XMATCH 函数¶
函数概述¶
XMATCH 是 Excel 中用于“查找指定值在区域中的位置”的函数,可以理解为 MATCH 的增强版。它不仅支持更灵活的匹配模式(精确/近似、支持通配符),还支持从后往前搜索、并提供更明确的搜索与匹配控制。
典型用途包括:
- 在一列/一行中定位某个值出现的位置序号
- 配合
INDEX/XLOOKUP做更灵活的查找与取值 - 在有序数据中做近似匹配(找小于等于/大于等于的最近值)
- 从底部开始查找“最后一次出现”的位置
基础语法¶
参数说明¶
| 参数 | 是否必填 | 含义 | 说明 |
|---|---|---|---|
lookup_value |
必填 | 要查找的值 | 可以是数字、文本、逻辑值、单元格引用等 |
lookup_array |
必填 | 查找范围 | 必须是一维区域(单行或单列数组) |
[match_mode] |
可选 | 匹配模式 | 控制精确/近似/通配符匹配 |
[search_mode] |
可选 | 搜索模式 | 控制从前往后、从后往前、二分搜索等 |
match_mode(匹配模式)可选值¶
| 值 | 含义 | 适用场景 |
|---|---|---|
0(默认) |
精确匹配 | 查找完全相等的值 |
-1 |
精确匹配;找不到则返回小于等于的最近项 | 有序数据、阶梯定价、分段规则(向下取最近) |
1 |
精确匹配;找不到则返回大于等于的最近项 | 有序数据、阈值规则(向上取最近) |
2 |
通配符匹配(*、?、~) |
文本模糊匹配、按关键词定位 |
提示:使用
-1或1做近似匹配时,lookup_array通常需要排序,否则结果可能不符合预期。
search_mode(搜索模式)可选值¶
| 值 | 含义 | 适用场景 |
|---|---|---|
1(默认) |
从第一项到最后一项 | 常规查找 |
-1 |
从最后一项到第一项 | 查找“最后一次出现”的位置 |
2 |
二分搜索(升序) | 大数据量 + 升序排序的近似/精确查找 |
-2 |
二分搜索(降序) | 大数据量 + 降序排序的近似/精确查找 |
基础用法示范¶
下面示例默认数据在 A2:A10。
1)精确匹配:返回位置序号¶
在 A2:A10 中查找“北京”出现的位置(相对于该区域的序号):
- 若“北京”在
A2:A10的第 3 个单元格,则返回3。
2)返回“最后一次出现”的位置¶
如果区域内“北京”出现多次,想找最后一次出现的位置:
search_mode=-1从下往上找,得到最后一次出现的序号。
3)通配符匹配:按关键词定位¶
在 A2:A10 查找包含“华东”的文本(例如“华东-上海”“华东-南京”):
*表示任意长度字符,match_mode=2启用通配符匹配。
4)近似匹配:找“小于等于”的最近值¶
假设 A2:A10 是按升序排列的分段阈值(如:0、100、200、500…),要为某个数值(如 E2)找到对应区间的阈值位置:
- 找不到精确值时,返回小于等于
E2的最近项位置(常用于阶梯价、等级表)。
5)近似匹配:找“大于等于”的最近值¶
同样在有序阈值表中,若要向上取最近阈值:
- 找不到精确值时,返回大于等于
E2的最近项位置。
6)与 INDEX 组合:按位置取值¶
如果你先用 XMATCH 找位置,再用 INDEX 取出对应值(例如从 B2:B10 返回对应结果):
- 先在
A2:A10找到E2的位置,再从B2:B10取同位置的结果。
总结¶
XMATCH用于在一维区域内查找值并返回其相对位置序号,是MATCH的升级替代方案。- 通过
[match_mode]可以轻松实现精确匹配、通配符匹配,以及两种方向的近似匹配(向下/向上)。 - 通过
[search_mode]可以控制从前往后或从后往前查找,特别适合定位“最后一次出现”的记录。 - 实战中,
XMATCH经常与INDEX、XLOOKUP等函数组合,构建更清晰、更可控的查找与取值逻辑。