跳转至

XMATCH 函数

函数概述

XMATCH 是 Excel 中用于“查找指定值在区域中的位置”的函数,可以理解为 MATCH 的增强版。它不仅支持更灵活的匹配模式(精确/近似、支持通配符),还支持从后往前搜索、并提供更明确的搜索与匹配控制。

典型用途包括:

  • 在一列/一行中定位某个值出现的位置序号
  • 配合 INDEX / XLOOKUP 做更灵活的查找与取值
  • 在有序数据中做近似匹配(找小于等于/大于等于的最近值)
  • 从底部开始查找“最后一次出现”的位置

基础语法

=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])

参数说明

参数 是否必填 含义 说明
lookup_value 必填 要查找的值 可以是数字、文本、逻辑值、单元格引用等
lookup_array 必填 查找范围 必须是一维区域(单行或单列数组)
[match_mode] 可选 匹配模式 控制精确/近似/通配符匹配
[search_mode] 可选 搜索模式 控制从前往后、从后往前、二分搜索等

match_mode(匹配模式)可选值

含义 适用场景
0(默认) 精确匹配 查找完全相等的值
-1 精确匹配;找不到则返回小于等于的最近项 有序数据、阶梯定价、分段规则(向下取最近)
1 精确匹配;找不到则返回大于等于的最近项 有序数据、阈值规则(向上取最近)
2 通配符匹配(*?~ 文本模糊匹配、按关键词定位

提示:使用 -11 做近似匹配时,lookup_array 通常需要排序,否则结果可能不符合预期。

search_mode(搜索模式)可选值

含义 适用场景
1(默认) 从第一项到最后一项 常规查找
-1 从最后一项到第一项 查找“最后一次出现”的位置
2 二分搜索(升序) 大数据量 + 升序排序的近似/精确查找
-2 二分搜索(降序) 大数据量 + 降序排序的近似/精确查找

基础用法示范

下面示例默认数据在 A2:A10

1)精确匹配:返回位置序号

A2:A10 中查找“北京”出现的位置(相对于该区域的序号):

=XMATCH("北京", A2:A10)
  • 若“北京”在 A2:A10 的第 3 个单元格,则返回 3

2)返回“最后一次出现”的位置

如果区域内“北京”出现多次,想找最后一次出现的位置:

=XMATCH("北京", A2:A10, 0, -1)
  • search_mode=-1 从下往上找,得到最后一次出现的序号。

3)通配符匹配:按关键词定位

A2:A10 查找包含“华东”的文本(例如“华东-上海”“华东-南京”):

=XMATCH("*华东*", A2:A10, 2)
  • * 表示任意长度字符,match_mode=2 启用通配符匹配。

4)近似匹配:找“小于等于”的最近值

假设 A2:A10 是按升序排列的分段阈值(如:0、100、200、500…),要为某个数值(如 E2)找到对应区间的阈值位置:

=XMATCH(E2, A2:A10, -1)
  • 找不到精确值时,返回小于等于 E2 的最近项位置(常用于阶梯价、等级表)。

5)近似匹配:找“大于等于”的最近值

同样在有序阈值表中,若要向上取最近阈值:

=XMATCH(E2, A2:A10, 1)
  • 找不到精确值时,返回大于等于 E2 的最近项位置。

6)与 INDEX 组合:按位置取值

如果你先用 XMATCH 找位置,再用 INDEX 取出对应值(例如从 B2:B10 返回对应结果):

=INDEX(B2:B10, XMATCH(E2, A2:A10, 0))
  • 先在 A2:A10 找到 E2 的位置,再从 B2:B10 取同位置的结果。

总结

  • XMATCH 用于在一维区域内查找值并返回其相对位置序号,是 MATCH 的升级替代方案。
  • 通过 [match_mode] 可以轻松实现精确匹配、通配符匹配,以及两种方向的近似匹配(向下/向上)。
  • 通过 [search_mode] 可以控制从前往后或从后往前查找,特别适合定位“最后一次出现”的记录。
  • 实战中,XMATCH 经常与 INDEXXLOOKUP 等函数组合,构建更清晰、更可控的查找与取值逻辑。