Menu

Excel 通配符:COUNTIF、VLOOKUP 等函数中的 *、? 和 ~

在 Excel 的条件中,* 代表任意数量的字符,? 代表恰好一个字符:=COUNTIF(A2:A7,"*apple*") 统计包含 apple 的单元格。~ 把通配符还原成普通字符。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

Excel 在条件和查找中有三个通配符:* 匹配任意数量的字符(包括零个),? 匹配恰好一个字符,~ 把它后面的 * 或 ? 还原成普通字符。=COUNTIF(A2:A7,"*apple*") 统计任意位置包含 apple 的单元格。

用通配符计数
D2
ABCD
1ProductPatternCount
2Apple juice*apple*4
3Green appleapple*2
4Pineapple*juice2
5Orange juice?????0
6Pear*e4
7Apples
点击单元格查看它的公式。修改数字或公式,表格会重新计算。
  • *apple* 表示包含 apple:有 4 个匹配,因为 Pineapple 也算。
  • apple* 表示以 apple 开头:只有 Apple juice 和 Apples。COUNTIF 不区分大小写。
  • *juice 表示以 juice 结尾。
  • ????? 表示恰好五个字符。这些产品中没有五个字符的,所以结果是 0;在 A6 中输入 Peach,计数就变成 1。
  • *e 表示以 e 结尾。

在 C 列中输入你自己的模式,比如 *an* 或 P*,计数会随之更新。

VLOOKUP 和 XLOOKUP 中的模糊匹配

VLOOKUP 在精确匹配模式下(最后一个参数为 FALSE)支持通配符。在公式中把通配符和值连接起来,这样 D2 中只需输入开头的几个字母:

按开头字母查找
E2
ABCDE
1ProductPriceStarts withPrice
2Apple juice3.5Pin4
3Green apple1.24
4Pineapple4
5Orange juice3.2
6Pear0.9
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

两个公式都找到了 Pineapple。把 D2 改成 juice:VLOOKUP 的模式 juice* 要求文本以 juice 开头,所以返回 #N/A;而 XLOOKUP 的模式 *juice* 找到第一个包含它的产品 Apple juice。和所有精确匹配一样,通配符查找返回第一个符合条件的行,所以模式要写得足够具体。

只有当第五个参数 match_mode 为 2 时,XLOOKUP 才把 * 和 ? 当作通配符。否则它会按字面查找星号。MATCH 在 match_type 为 0 时支持通配符,XMATCH 则和 XLOOKUP 一样,在 match_mode 为 2 时支持。其余参数请看 VLOOKUP。

统计手机类产品
D2
ABCD
1ProductPhone products
2Smartphone
3Headphones
4Phone stand
5Laptop bag
6Charger
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 D2 中统计名称任意位置包含 phone 的产品数量。

用通配符求和与求平均

所有接受条件的函数都以相同的方式读取条件,所以同样的模式在 SUMIF、SUMIFS、AVERAGEIF、AVERAGEIFS、MAXIFS 和 MINIFS 中都适用:

按部分名称汇总
E2
ABCDE
1RegionSalesPatternTotal
2North-East120North*285
3North-West95*West155
4South80?????150
5South-West60
6East110
7North70
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

North* 把所有以 North 开头的地区相加,包括 North 本身,因为 * 也可以匹配零个字符。????? 把恰好五个字符的地区相加:South 和 North。

所有 West 地区的销售额
E2
ABCDE
1RegionSalesWest total
2North-East120
3North-West95
4South80
5South-West60
6East110
7North70
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 E2 中汇总名称以 West 结尾的所有地区的销售额。

用 ~ 查找真正的星号或问号

要统计包含真正的 * 或 ? 的文本,就在它前面加一个波浪号。波浪号本身写作 ~~。

转义通配符
C2
ABC
1NoteCount
2Rated 5*1
3Why?1
4Done4
55 stars
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C2 统计包含字面星号的单元格(只有 A2),C3 统计包含问号的单元格。C4 展示了另一面:单独的 "*" 匹配任何文本,所以它统计所有文本单元格,这里是 4 个。它会跳过数字和空单元格,所以 COUNTIF(range,"*") 是统计文本单元格的常用方法。

哪些函数支持通配符

支持 *、?、~不支持
COUNTIF、COUNTIFS、SUMIF、SUMIFS、AVERAGEIF、AVERAGEIFS、MAXIFS、MINIFS=、<> 及其他比较运算符
使用 FALSE 的 VLOOKUP 和 HLOOKUP单独使用的 IF
使用 0 的 MATCHFIND
match_mode 为 2 的 XLOOKUP 和 XMATCHFILTER、UNIQUE、SORT
SEARCHSUBSTITUTE、TEXTBEFORE、TEXTAFTER
查找和替换(Ctrl+H)、筛选框

SEARCH 在公式中也支持通配符:在 Excel 中,=SEARCH("b?d","a bad day") 返回 3(详见 FIND 和 SEARCH)。对于 FILTER,请用 ISNUMBER(SEARCH(...)) 作为条件,而不是模式。

常见错误:在 = 后面使用通配符

= 运算符从不识别通配符:=A2="*apple*" 判断的是 A2 中是否正好是 *apple* 这七个字符。在 Excel 中,A2 为 Green apple 时:

=A2="*apple*"                    FALSE
=IF(A2="*apple*","yes","no")     no

请改为把判断放进 COUNTIF,它对单个单元格返回 1 或 0,或者使用 SEARCH:

用通配符判断单个单元格
B2
ABC
1ProductCOUNTIF testSEARCH test
2Green applecontains applecontains apple
3Pearnono
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

IF 把 COUNTIF 返回的 1 当作 TRUE,把 0 当作 FALSE。SEARCH 的写法完全不需要通配符,因为 SEARCH 本身就会在单元格的任意位置查找文本。

常见问题

Excel 中的通配符有哪些?

* 匹配任意数量的字符,包括零个;? 匹配恰好一个字符;在 *、? 或 ~ 前面加上 ~,就把它变成普通字符。"*apple*" 表示包含 apple,"A*" 表示以 A 开头,"???" 表示恰好三个字符。

VLOOKUP 中怎么使用通配符?

把通配符和查找值连接起来,并使用精确匹配:=VLOOKUP(E2&"*",A2:B6,2,FALSE) 找到第一个以 E2 开头的条目。在 XLOOKUP 中,把 match_mode 设为 2:=XLOOKUP("*"&E2&"*",A2:A6,B2:B6,"none",2)。

为什么通配符在我的 IF 公式中不起作用?

= 比较不识别通配符,所以 =IF(A2="*apple*",...) 只会匹配字面上的文本 *apple*。请改用 =IF(COUNTIF(A2,"*apple*"),"Yes","No") 或 =IF(ISNUMBER(SEARCH("apple",A2)),"Yes","No")。

怎么统计包含星号的单元格?

在星号前面加一个波浪号:=COUNTIF(A2:A10,"*~**")。第一个和最后一个 * 是通配符,~* 是字面上的星号。

Coddy 编程语言插图

和 Coddy 一起学编程

开始