Menu

Excel COUNTIF 函数:统计满足条件的单元格

=COUNTIF(B2:B7,"North") 统计 B2:B7 中内容为 North 的单元格。在可编辑的在线表格中按文本、数字、通配符、空白和日期计数,并找出重复项。

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

=COUNTIF(B2:B7,"North") 统计 B2:B7 中内容为 North 的单元格。COUNTIF 有两个参数:要检查的区域,以及单元格被计入时必须满足的条件。

统计一个地区
F2
ABCDEF
1RepRegionSalesRegionCount
2AnaNorth120North3
3BenSouth45South2
4CaraNorth80
5DanEast55
6EvaSouth200
7FinnNorth30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

F2 统计 North 的行数。F3 做同样的事,只是条件放在单元格中:把 E3 改成 East,或修改 B 列中的某个地区,计数都会跟着变。用单元格引用就能搭建汇总表:每行一个 COUNTIF,各自指向自己的标签。

COUNTIF 语法

=COUNTIF(range, criteria)
  • range 是要检查的单元格。它必须是工作表上的区域,例如 B2:B7 或 B:B。
  • criteria 是条件,可以写成双引号中的文本、数字或单元格引用。下面每种形式都是一个条件:
条件统计的单元格
"North"等于 North(不分大小写)
">50"大于 50
"<>North"除 North 之外的任何内容,包括空白
55等于数字 55
">"&F6大于 F6 中的值
"*apple*"包含 apple 的文本
""空
"<>"非空

COUNTIF 大于、小于或等于

把比较运算符和数字一起放在引号中:">50"、"<=50"、"<>55"。只写一个数字、不加运算符,表示“等于”。

按数字计数
F2
ABCDEF
1RepRegionSalesConditionCount
2AnaNorth120Over 504
3BenSouth4550 or less2
4CaraNorth80Exactly 551
5DanEast55Not 555
6EvaSouth200Limit100
7FinnNorth30Over the limit2
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

六笔销售中有四笔大于 50,两笔小于或等于 50,所以 F2 和 F3 相加始终等于行数。F7 从 F6 读取上限:把 F6 改成 50,F7 就会显示与 F2 相同的计数。

COUNTIF 引用单元格

当要比较的值在某个单元格中时,运算符留在引号内,再用 & 把单元格连接上去:">"&F6、"<="&F6、"<>"&E3。一个常见的 COUNTIF 错误是写成 ">F6"。在引号中,F6 只是两个字符的文本,所以 Excel 会拿每个数字与文本“F6”比较,计数几乎总是 0。

“等于某个单元格”不需要运算符:只要 E3 中有值,=COUNTIF(B2:B7,E3) 就等同于 =COUNTIF(B2:B7,"="&E3)。

COUNTIF 包含文本:通配符

COUNTIF 的条件中可以使用两种通配符。* 代表任意数量的字符,? 代表正好一个字符。"*apple*" 匹配任意位置含有 apple 的单元格,"P*" 匹配以 P 开头的单元格,"????" 匹配正好四个字符的文本。

用通配符统计文本
D2
ABCD
1ProductConditionCount
2Applecontains apple4
3Pineapplestarts with P3
4Pear4 letters2
5apple juiceequal to APPLE1
6not Pear6
7Plumempty1
8Green applenot empty6
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

把 D2 和 D5 放在一起看。"*apple*" 找到 4 个单元格,而不带通配符的 "APPLE" 只找到 1 个,就是内容正好为 Apple 的那个。不用通配符时必须整个单元格都匹配,而且匹配不区分大小写,所以 "APPLE"、"Apple" 和 "apple" 统计的是同一个单元格。

D6 展示了一个陷阱:"<>Pear" 统计出 6 个单元格,因为空的 A6 也“不是 Pear”。如果只想统计已填写且不是 Pear 的单元格,用带两个条件的 COUNTIFS:=COUNTIFS(A2:A8,"<>Pear",A2:A8,"<>")。

要使用某个单元格中的文本,把通配符和它连接起来:=COUNTIF(A2:A8,"*"&E2&"*")。要统计真正的星号或问号,在它前面加波浪号:"~*"。更多写法见通配符页面,统计所有包含文本的单元格见统计包含文本的单元格。

COUNTIF 空白与非空

上面表格中的 D7 和 D8 分别统计空单元格和已填写的单元格。"" 表示空,"<>" 表示非空。返回空字符串的公式(=IF(B2>0,B2,""))看起来是空白,"" 会把它算作空,但 "<>" 也会把它算作已填写,因为单元格中有公式。COUNTIF 统计非空单元格介绍了解决办法。

COUNTIF 统计日期

在 Excel 中日期就是数字,所以比较运算符同样适用。用 DATE 构造日期,或从单元格中取日期,再用 & 连接到运算符上。千万不要按自己所在地区的格式把日期直接写在引号里:">3/1/2026" 在美国表示 3 月 1 日,而在欧洲大部分地区表示 1 月 3 日。

按日期计数
E2
ABCDE
1RepDateConditionCount
2Ana2026-01-05From Feb 14
3Ben2026-01-12Cutoff2026-03-01
4Cara2026-02-03Before the cutoff4
5Dan2026-02-18On Jan 121
6Eva2026-03-02
7Finn2026-03-20
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

E2 统计 2 月 1 日及之后的四个日期。E4 统计早于 E3 中截止日期的日期:把 E3 改成 2026-02-01,结果降为 2。统计两个日期之间的数量需要两个条件,也就是 COUNTIFS:=COUNTIFS(B2:B7,">="&DATE(2026,2,1),B2:B7,"<"&DATE(2026,3,1))。

用 COUNTIF 统计重复项

用整个列表对其中某个单元格做 COUNTIF,就能知道这个值出现了多少次。大于 1 就是重复项。用 $ 锁定列表,让它在公式向下填充时保持不动。

标记重复的名字
B2
ABC
1NameTimesDuplicate?
2Ana2TRUE
3Ben2TRUE
4Cara1FALSE
5Ana2TRUE
6Dan1FALSE
7Ben2TRUE
8Eva1FALSE
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Ana 和 Ben 各出现两次,所以它们的行显示 2 和 TRUE,A2:A8 上的条件格式规则 =COUNTIF($A$2:$A$8,A2)>1 会突出显示它们。把最后一个名字改成 Cara,Cara 也会被突出显示。

=COUNTIF($A$2:A2,A2)>1(只锁定区域的起点)从顶部开始统计到每个名字自己所在的行,所以它会标记第二个 Ana,而不标记第一个。这种写法会标出你要删除的副本,并保留每个名字的第一次出现。完整方法见删除重复项。

练习:COUNTIF 引用单元格

轮到你了:统计大额订单
E3
ABCDE
1OrderAmountSettingValue
2A-101120Limit100
3A-10245Orders over limit
4A-103310
5A-104100
6A-10585
7A-106140
8A-10799
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 统计 B2:B8 中大于 E2 中上限的订单数。在 E3 中写公式。

通过后改一下 E2:计数应该随之变化。正好为 100 的订单并不“大于”100。

轮到你了:统计包含某个词的产品
D3
ABCD
1ProductSettingValue
2AppleWordapple
3Pear juiceMatches
4Pineapple
5Banana
6Green apple
7Pear
8Apple cider
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 统计 A2:A8 中名称任意位置包含 D2 中那个词的产品。在 D3 中写公式。

COUNTIF 多个条件

COUNTIF 只接受一个条件。两个或更多条件分两种情况。

所有条件都必须成立(North 且大于 50):使用 COUNTIFS,它接受成对的区域和条件。

=COUNTIFS(B2:B7,"North",C2:C7,">50")

满足任意一个条件即可(North 或 South):把两个 COUNTIF 相加,或者给一个 COUNTIF 一个用大括号括起来的列表,再对结果 SUM。

=COUNTIF(B2:B7,"North")+COUNTIF(B2:B7,"South")
=SUM(COUNTIF(B2:B7,{"North","South"}))

如果一个单元格可能同时满足两个条件("*apple*" 或 "*green*"),就不要用这种“或”的写法:Green apple 会被统计两次。对于有重叠的条件,=SUMPRODUCT(--((ISNUMBER(SEARCH("apple",A2:A8))+ISNUMBER(SEARCH("green",A2:A8)))>0)) 对每个单元格只统计一次。

区分大小写计数

COUNTIF 从不区分 Apple 和 apple。当大小写很重要时,用区分大小写的 EXACT 进行比较,再把 TRUE 结果加起来:

=SUMPRODUCT(--EXACT(A2:A8,"Apple"))

-- 把 TRUE 和 FALSE 转换成 1 和 0。SUMPRODUCT 是处理 COUNTIF 无法表达的条件的通用工具。

为什么 COUNTIF 返回 0 或计数不对

  • 运算符和单元格都写在了引号里。 ">F6" 是在与文本 F6 比较。应写成 ">"&F6。
  • 数据中有多余的空格。 末尾带空格的“North ”不等于“North”。先用 "North*" 统计一下来确认,再用 TRIM 清理这一列。
  • 以文本形式存储的数字。 像 ">50" 这样的条件只比较真正的数字,所以以文本形式输入的数字(左对齐,常带绿色小三角)会被跳过。先转换它们;参见以文本形式存储的数字。
  • 区域指向另一个已关闭的工作簿。 在那个工作簿打开之前,COUNTIF 会返回 #VALUE!。SUMPRODUCT 没有这个限制。
  • 文本超过 255 个字符。 COUNTIF 无法匹配超过 255 个字符的字符串。改为直接比较:=SUMPRODUCT(--(A2:A8=E2))。

常见问题

Excel 中 COUNTIF 怎么用?

给它一个区域和一个条件:=COUNTIF(B2:B7,"North") 统计 B2:B7 中等于 North 的单元格,=COUNTIF(C2:C7,">50") 统计大于 50 的数字。文本和比较条件要放在双引号中。

COUNTIF 如何引用单元格作为条件?

用 & 把运算符和单元格连接起来:=COUNTIF(C2:C7,">"&F6) 统计大于 F6 中数字的值。如果把 ">F6" 都写在引号里,就是在与文本 F6 比较,通常会返回 0。

COUNTIF 区分大小写吗?

不区分。"apple"、"Apple" 和 "APPLE" 统计的单元格都一样。要区分大小写地统计,使用 =SUMPRODUCT(--EXACT(A2:A8,"Apple"))。

COUNTIF 如何设置多个条件?

对于必须同时满足的条件,使用 COUNTIFS:=COUNTIFS(B2:B7,"North",C2:C7,">50")。对于满足两个值之一的情况,把两个 COUNTIF 相加:=COUNTIF(B2:B7,"North")+COUNTIF(B2:B7,"South")。

Coddy 编程语言插图

和 Coddy 一起学编程

开始