系列 · Excel 函数学习与实战 第 4 篇 / 共 5 篇 教程

Excel 通配符使用指南:*、?、~ 和支持函数清单

讲清 Excel 中 *、?、~ 三种通配符的含义,整理 COUNTIF、SUMIFS、XLOOKUP、MATCH、SEARCH 等支持通配符的常用函数,并给出前缀、包含、结尾和转义案例。

作者:黄撑 更新于 2026-07-17

在 Excel 里,通配符就是用一个符号代替不确定的文字。比如商品编码可能是 K161-BKK161-WHK161-蓝牙版,共同点都是以 K161 开头,就不必先用 LEFT 截取,直接写 "K161*" 即可。

先看一个完整案例。下面的公式会检查 SKU 列,找到所有以 K161 开头的记录,再把对应订单金额汇总起来。

EXCEL WILDCARD MATCHINGK161*:匹配所有以 K161 开头的 SKU

不用 LEFT 截取,直接用通配符完成匹配与汇总。

ABCDE
7订单号平台SKU订单金额客服响应分钟
8TM001天猫K161-BK199.004
9PDD002拼多多X51C-BK159.008
10JD003京东M30-BK99.003
11TM004天猫P12-BK149.005
12PDD005拼多多K161-WH219.0012
13JD006京东X51C-BK169.006
14TM007天猫M30-WH109.002
15PDD008拼多多P12-BL139.0010
16TM009天猫K161-BK209.007
17PDD010拼多多M30-BK89.009
1条件范围 C8:C172条件:以 K161 开头3求和范围 D8:D17
SUMIF 公式
=SUMIF(1C8:C17,2"K161*",3D8:D17)
1
检查哪里SKU 列C8:C17
2
匹配什么以 K161 开头"K161*"
3
汇总哪里订单金额列D8:D17
命中K161-BK、K161-WH、K161-BK
金额199 + 219 + 209
结果627
C 列匹配 3 行保持相同行D 列汇总:627

这个案例里,C8:C17"K161*"D8:D17 分别回答三个问题:检查哪里、匹配什么、汇总哪里。理解这三个问题,比单独背公式参数更容易。

表格上方的 A~E 和左侧的 7~17 是 Excel 的列标与行号,不属于数据本身。字段标题放在第 7 行,公式从第 8 行开始计算,因此 SKU 对应 C8:C17,订单金额对应 D8:D17

Excel 只有三种通配符

严格来说,真正负责模糊匹配的是 *?~ 是转义符,用于告诉 Excel:后面的星号或问号是普通字符,不要把它当作通配符。

*
任意数量字符可以很多,也可以没有
K161任意内容
K161✓ 匹配K161-BK✓ 匹配K161-黑色-套装✓ 匹配

K161* 表示固定内容是 K161,后面允许出现任意数量字符。

?
正好一个字符不能多,也不能少
K?61
K161✓ 匹配KA61✓ 匹配K1261× 两个字符

K?61 中间只有一个字符槽位,所以 K1261 不符合。

~
取消通配能力查找真正的 * 或 ?
*任意字符~*真实星号
赠品*✓ 包含星号赠品*请勿单拍✓ 包含星号赠品说明× 没有星号

"*~**" 中,前后两个星号是通配符,中间的 ~* 才是真正的星号字符。

六种高频写法

通配符最常见的差别,不是函数,而是固定文字出现在什么位置。把字符串看成几段,就能快速判断星号应该放在哪里。

开头匹配
K161任意内容
"K161*"

型号固定,颜色、规格或备注在后面变化。

结尾匹配
任意内容已退款
"*已退款"

状态文字固定在单元格末尾。

包含匹配
任意蓝牙任意
"*蓝牙*"

标题任意位置出现“蓝牙”。

固定一位
K?61
"K?61"

K 和 61 中间必须正好一个字符。

引用条件
F2 的内容任意内容
F2&"*"

把单元格中的型号作为开头条件。

查真实符号
任意*任意
"*~**"

查找文本中真正出现的星号。

下面这张表保留了更完整的边界,适合需要核对时快速查询。

写法匹配规则可以匹配不会匹配
K161*以 K161 开头K161K161-黑色黑色-K161
*K161以 K161 结尾黑色-K161K161-黑色
*K161*任意位置包含 K161黑色-K161-套装K162-黑色
K161?K161 后正好一个字符K161AK161黑K161K161黑色
K?61K 和 61 中间正好一个字符K161KA61K1261
~*查找真正的星号赠品* 中的 *普通文字

哪些函数支持通配符

并不是所有函数都能直接识别通配符。即使支持,不同函数的开启方式也不一样:条件统计函数直接写,XLOOKUPXMATCH 要把匹配模式设为 2VLOOKUPHLOOKUPMATCH 则要使用精确匹配参数。

先回答一个问题你希望 Excel 返回什么?
统计或汇总直接把通配符写进条件
COUNTIF(S)SUMIF(S)AVERAGEIF(S)MAXIFSMINIFS
例如:"K161*"
返回一条结果查找函数需要开启匹配方式
XLOOKUPVLOOKUPHLOOKUP
XLOOKUP 写 match_mode=2;传统函数写 FALSE
返回所在位置位置函数同样区分参数
XMATCHMATCH
XMATCH 写 2;MATCH 写 0
判断文字内部在单元格文本里搜索模式
SEARCHISNUMBERFILTER
SEARCH 负责匹配,其他函数负责转换或筛选

支持方式速查表

函数通配符写在哪里必须注意的参数常见用途
COUNTIFCOUNTIFS条件参数统计某类编码、标题或状态数量
SUMIFSUMIFS条件参数汇总某类商品的销量或金额
AVERAGEIFAVERAGEIFS条件参数计算某类商品的平均值
MAXIFSMINIFS条件参数找出某类数据的最大值或最小值
VLOOKUPHLOOKUP查找值最后一个参数写 FALSE返回第一条符合模糊条件的数据
MATCH查找值第三个参数写 0返回第一条匹配记录的位置
XLOOKUP查找值第五个参数 match_mode2返回第一条符合通配符的数据
XMATCH查找值第三个参数 match_mode2返回第一条符合通配符的位置
SEARCHfind_text 参数在单元格文字内部查找模式

三类函数的写法不一样

1. 条件统计函数:直接写通配符

这类函数最简单,只需要把通配符写进条件中。

统计数量=COUNTIF(C8:C17,"K161*")命中 3 条
汇总金额=SUMIF(C8:C17,"K161*",D8:D17)结果 627
计算平均=AVERAGEIF(C8:C17,"K161*",D8:D17)结果 209
条件来自单元格=AVERAGEIF(C8:C17,F2&"*",D8:D17)F2 填写 K161

条件来自单元格时,不要把单元格引用放进引号:

=AVERAGEIF(C8:C17,F2&"*",D8:D17)

假设 F2 是 K161F2&"*" 会拼成 K161*。这里的 F2 是额外的条件输入单元格,不属于上方 A:E 数据区域。

2. 查找函数:先开启正确的匹配模式

XLOOKUP 默认是精确匹配,但默认不会把 *? 当成通配符。要使用通配符,必须把第五个参数设为 2

默认写法=XLOOKUP("K161*",C8:C17,D8:D17)结果:未找到

默认把星号当成公式中的普通匹配内容,不会进入通配符模式。

开启通配符模式=XLOOKUP("K161*",C8:C17,D8:D17,"未找到",2)结果:199

第五个参数写 2 后,返回第一条以 K161 开头的记录。

XMATCH 同样需要把第三个参数设为 2

=XMATCH("K161*",C8:C17,2)

传统查找函数使用精确匹配参数时,也能识别通配符:

=VLOOKUP("K161*",C8:D17,2,FALSE)
=MATCH("K161*",C8:C17,0)

3. SEARCH:在文本内部查找模式

SEARCH 返回的是匹配内容在文本中的起始位置。比如编码中间有一个字符不确定:

=SEARCH("K?61",C8)

上方案例中的 C8 是 K161-BK,结果为 1。如果找不到,会返回 #VALUE!

实际判断时,通常会和 ISNUMBER 组合:

=ISNUMBER(SEARCH("K?61",C8))

找到时返回 TRUE,找不到时返回 FALSE

回到最开始的 AVERAGEIF 公式

原来的公式是:

=AVERAGEIF(MAP(LEFT(C8:C17,4),LAMBDA(r,LEFT(r,4))),"K161",D8:D17)

它的真实目标只是:找出 C 列中所有以 K161 开头的记录,再计算 D 列平均值。

因此可以直接改成:

=AVERAGEIF(C8:C17,"K161*",D8:D17)
原写法先截取,再逐项处理
LEFTMAPLAMBDAAVERAGEIF
=AVERAGEIF(MAP(LEFT(...)),"K161",D8:D17)

需要先生成中间数组,公式长,读者还要反推每一步在做什么。

容易踩的五个坑

01

XLOOKUP 忘了写匹配模式 2

=XLOOKUP("K161*",C8:C17,D8:D17) 不会启用通配符。应改为 =XLOOKUP("K161*",C8:C17,D8:D17,"未找到",2)

参数问题
02

* 不等于“所有非空单元格”

=COUNTIF(A2:A100,"*") 主要统计文本。要统计数字、文字和日期等全部非空内容,优先使用 COUNTA(A2:A100)

统计口径
03

通配符通常不区分英文大小写

K161*k161* 通常会匹配相同内容。需要严格区分大小写时,不能只依赖通配符条件。

匹配边界
04

FIND 和 FILTER 不会直接解释通配符

FILTER 需要一组 TRUE/FALSE。按包含关系筛选时,可以组合:=FILTER(D8:D17,ISNUMBER(SEARCH("K161",C8:C17)))

函数能力
05

前后空格会改变“开头”和“结尾”

如果单元格实际是 K161-BK,前面多了空格,就不满足“以 K161 开头”。数据来源不干净时,先用 TRIM 或清洗源数据。

数据质量

应该选哪个函数

通配符函数选择顺序

统计或汇总 使用 COUNTIF、SUMIF 等条件统计函数

计数用 COUNTIF(S),求和用 SUMIF(S),平均值用 AVERAGEIF(S),极值用 MAXIFS 或 MINIFS。

返回一条结果 优先使用 XLOOKUP

把 match_mode 设为 2;旧表格可以使用 VLOOKUP,并把最后一个参数设为 FALSE。

返回所在位置 使用 XMATCH 或 MATCH

XMATCH 的 match_mode 写 2;MATCH 的 match_type 写 0。

判断文字内部是否符合模式 使用 SEARCH

需要 TRUE/FALSE 时,再组合 ISNUMBER;需要筛选多行时,可继续组合 FILTER。

开头结尾包含固定一位这些文字位置关系明确时,优先考虑通配符。

参考资料