Excel COUNTIF 函数怎么用?条件计数、通配符与多条件 COUNTIFS 示例

COUNTIF 怎么用?语法 =COUNTIF(范围, 条件),附文本、数字、日期、通配符、空白单元格计数示例,以及 COUNTIFS 多条件和结果为 0 的排查。

想知道表格里”华东订单有几单””销售额超过 1000 的有几条””备注还空着的有几行”?这类”数一数”的问题,用 COUNTIF 一个公式就能解决。

先说结论:点一个空单元格,输入 =COUNTIF(范围, 条件),比如 =COUNTIF(B2:B7,"East"),回车,得到的就是满足这个条件的单元格个数。它在 Microsoft 365(Windows 和 Mac)、Excel 2024/2021、较早的桌面版以及网页版里用法一致。需要同时满足两个以上条件时,改用 COUNTIFS。

COUNTIF 公式的两个部分

所有 COUNTIF 都是同一个结构:=COUNTIF(range, criteria),也就是”范围”和”条件”,两者都必填,用逗号隔开,结果永远是一个数字。

  • 范围(range):Excel 要去查找的单元格区域,如 B2:B7,也可以是整列 B:B、一行、一块区域或命名区域。
  • 条件(criteria):单元格要通过的测试,可以是数字(1200)、带引号的文本(”East”)、带引号的比较式(”>1000″)、单元格引用(G2),或带通配符的模式(”A*”)。

一条规则搞定大部分引号困惑:文本,以及带比较符号的条件要放在双引号里;单纯的数字和单元格引用不用加引号。=COUNTIF(C2:C7,1200) 和 =COUNTIF(C2:C7,">1000") 都是对的。微软官方的 COUNTIF 说明页也是这么描述的,并指出它只接受一个条件。

本文用到的示例数据

下面所有公式都基于这个小销售表,您可以从 A1 开始在空白表格里输入,对照每个结果。注意 E3 和 E6 是故意留空的。

行A:销售B:地区C:销售额D:下单日期E:备注
2AlexEast12002026/9/3Rush
3PriyaWest8502026/9/15
4Jordaneast24002026/10/2Gift wrap
5SamNorth4502026/10/9Call first
6AlexWest17502026/10/20
7TaylorEast6002026/10/22Rush

第 1 行是标题,写公式时别把标题行包含进范围,免得它被一起判断。

写出第一个 COUNTIF 公式

目标:数一数 East 地区有几单。

  1. 点数据外面的空单元格,比如 G2。公式放在被统计的范围内部会造成循环引用。
  2. 输入 =COUNTIF(,Excel 会弹出参数提示。
  3. 拖选 B2 到 B7,或直接输入 B2:B7。
  4. 输入逗号。
  5. 输入带双引号的 “East”。
  6. 输入右括号,单元格里就是 =COUNTIF(B2:B7,"East")。
  7. 按回车(Mac 按 Return),结果是 3。

为什么是 3 而不是 2?因为 Jordan 的地区写成了小写的 east,而 COUNTIF 不区分大小写,East、east、EAST 被当成同一个值。

不想手输的话,Windows 版 Excel 有向导:点结果单元格,依次选”公式 > 其他函数 > 统计 > COUNTIF”(或点编辑栏旁边的 fx 搜索),弹出的函数参数窗口里有”区域”和”条件”两个框,点确定前还能预览结果。Mac 上从”公式 > 插入函数”打开右侧的公式生成器,用法一样。

Excel 函数参数窗口中 COUNTIF 的区域与条件,可预览计数结果
示意图:函数参数窗口会在点确定前预览计数结果

统计符合指定文本的单元格

目标公式结果
Alex 的订单数=COUNTIF(A2:A7,"Alex")2
West 地区的订单数=COUNTIF(B2:B7,"West")2
不是 East 的订单数=COUNTIF(B2:B7,"<>East")3
备注恰好是 Rush=COUNTIF(E2:E7,"Rush")2

精确匹配要求整个单元格等于该文本,写着”Rush order”的单元格不会被 “Rush” 统计到。想做”包含”式匹配,要用后面的通配符。

“<>” 表示”不等于”。要注意,”不等于 East”也会把空单元格算进去,因为空格子当然不是 East。范围里有空行时,这个结果会比”填了内容且不同”的数量更大。

统计大于、小于或等于某个数的单元格

数字条件要把比较符号和数字一起放进同一对引号里。Excel 支持六种运算符:

运算符含义示例结果
=等于=COUNTIF(C2:C7,1200)1
>大于=COUNTIF(C2:C7,">1000")3
<小于=COUNTIF(C2:C7,"<600")1
>=大于或等于=COUNTIF(C2:C7,">=850")4
<=小于或等于=COUNTIF(C2:C7,"<=600")2
<>不等于=COUNTIF(C2:C7,"<>600")5

留意 “>” 和 “>=” 的区别:刚好等于 850 的那一行,会被 “>=850” 统计,却不会被 “>850” 统计。统计结果差一个,多半是这一个字符造成的。

统计两个数之间的单元格

COUNTIF 一个条件放不下”介于”,但可以用两次计数相减。统计销售额从 600 到 1500 的单数:

=COUNTIF(C2:C7,">=600")-COUNTIF(C2:C7,">1500")

前半部分得到 5 条(600 及以上),后半部分是超过 1500 的 2 条,相减得 3(1200、850、600)。后面的 COUNTIFS 写法更好读。

用单元格作为条件

把条件写进某个单元格,而不是写死在公式里,改条件时就不用改公式。在 G5 输入 West,然后用 =COUNTIF(B2:B7,G5),结果是 2;把 G5 改成 East,结果变 3。注意 G5 不加引号,加了引号 Excel 就去找字面上的”G5″了。

比较条件要多一步:假设 G6 里是数字 1000,想统计高于它的销售额,要把运算符放进引号,再用连接符 & 接上单元格:

=COUNTIF(C2:C7,">"&G6)

COUNTIF 用 & 连接运算符与单元格 G6 作为条件
示意图:用 & 把运算符和单元格连起来,计数随 G6 变化

结果是 3。常见的错误写法是把 “>G6” 整个放进引号,这样 Excel 比较的是文本”G6″而不是数字 1000,结果会是 0。如果打算把公式复制到别处,记得用美元符号锁定范围,如 $B$2:$B$7,否则下拉填充时范围会漂移,计数就乱了。

统计某个日期之前、之后或某段时间内

Excel 把日期存成序列号,所以日期条件和数字条件原理一样。最稳妥的写法是借助 DATE 函数,它按年、月、日的顺序读取,不受电脑日期格式影响:

目标公式结果
2026 年 10 月 1 日及之后=COUNTIF(D2:D7,">="&DATE(2026,10,1))4
2026 年 10 月 1 日之前=COUNTIF(D2:D7,"<"&DATE(2026,10,1))2
恰好某一天=COUNTIF(D2:D7,DATE(2026,10,20))1
今天及以后=COUNTIF(D2:D7,">="&TODAY())每天变化

也可以直接写成 “>10/1/2026″,在美式日期格式的电脑上有效;但文件换到日在前月在后的电脑上就可能被理解成另一个日期,所以 DATE 更可靠。另外,从网页或其他软件粘贴来的”文本日期”不会被这些公式统计,如果日期在单元格里靠左显示,很可能就是文本。

用通配符匹配单元格的一部分

通配符能把精确匹配变成模式匹配,COUNTIF 认三个符号:

  • *(星号):任意数量的字符,包括零个。
  • ?(问号):恰好一个字符。
  • ~(波浪号):放在 * 或 ? 前面,表示查找真正的星号或问号。
目标公式结果
名字以 A 开头=COUNTIF(A2:A7,"A*")2
名字以 r 结尾=COUNTIF(A2:A7,"*r")1
备注里任意位置含 wrap=COUNTIF(E2:E7,"*wrap*")1
名字恰好四个字母=COUNTIF(A2:A7,"????")2
含有任意文本的单元格=COUNTIF(E2:E7,"*")4
含真正星号的单元格=COUNTIF(E2:E7,"*~**")0

通配符和单元格组合时,写法与运算符类似:=COUNTIF(E2:E7,"*"&G7&"*") 会统计备注里含有 G7 中那个词的行数。通配符只对文本有效,”1*” 不会统计数字 1200,因为它存储的是数字,而不是字符 1、2、0、0。

统计空白与非空白单元格

  • =COUNTIF(E2:E7,""):统计空单元格,结果为 2。
  • =COUNTIF(E2:E7,"<>"):统计不为空的单元格,结果为 4。

这两条适合做进度检查,比如还有多少行没填备注。Excel 也有专门的函数干同样的事,下面对比部分会讲。

区分大小写怎么办

微软文档说明 COUNTIF 的条件不区分大小写,这就是前面 East 和 east 被一起统计的原因。多数时候这正是您想要的。如果需要区分大小写,COUNTIF 做不到,可以用 EXACT 套在 SUMPRODUCT 里:

=SUMPRODUCT(--EXACT(B2:B7,"East"))

EXACT 只在大小写完全一致时返回 TRUE,两个负号把 TRUE、FALSE 变成 1 和 0,SUMPRODUCT 再把它们加起来。用示例数据结果是 2,不包括 Jordan 的小写 east。

超过 255 个字符的长文本

要匹配的文本超过 255 个字符时,COUNTIF 会给出错误结果。名字、分类一般碰不到,但产品描述、问卷留言、网址有可能。微软给的办法是把长文本拆成几段,用 & 或 CONCATENATE 连起来;如果长文本本来就在某个单元格里,更简单的办法是不用 COUNTIF:

=SUMPRODUCT(--(A2:A100=G8))

它用普通等号逐个比较,没有 255 字符限制。和 COUNTIF 一样,等号也不区分大小写,但不支持通配符。

多个条件:用 COUNTIFS

COUNTIFS 统计”同时满足所有条件”的行,写法是一对对”范围 + 条件”:=COUNTIFS(范围1, 条件1, 范围2, 条件2, ...)。统计 East 地区且销售额大于 1000 的订单:

=COUNTIFS(B2:B7,"East",C2:C7,">1000")

COUNTIFS 只统计同时通过两个条件的行
示意图:COUNTIFS 只统计同时通过两个测试的行

结果是 2:Alex 的 1200 和 Jordan 的 2400。Taylor 也在 East,但 600 没通过第二个条件。其他常用写法:

  • 介于两个值之间:=COUNTIFS(C2:C7,">=600",C2:C7,"<=1500"),结果 3,同一个范围可以重复使用。
  • 某个月份内的日期:=COUNTIFS(D2:D7,">="&DATE(2026,10,1),D2:D7,"<"&DATE(2026,11,1)),结果 4,即 10 月的订单。
  • 文本加空白检查:=COUNTIFS(B2:B7,"West",E2:E7,""),结果 2,即没写备注的 West 订单。

根据微软 COUNTIFS 函数说明页,最多可以放 127 组范围和条件,并且每个范围的行列数必须与第一个相同。大小不一致,比如 B2:B7 配 C2:C10,会返回 #VALUE! 错误。该页面还提到,指向空单元格的条件会被当成 0,所以一个空的条件格可能悄悄改变结果。

“或”逻辑:统计两个值中的任一个

COUNTIFS 只能做”并且”。要统计满足某一个或另一个值的行,把两个 COUNTIF 相加:

=COUNTIF(B2:B7,"East")+COUNTIF(B2:B7,"West")

结果是 5(3 个 East 加 2 个 West)。更短的写法是把选项放进花括号,再用 SUM 套起来:=SUM(COUNTIF(B2:B7,{"East","West"}))。相加的方式在一个单元格不可能同时匹配两个选项时很干净,比如每行只有一个地区。如果条件可能重叠,比如备注含 Rush 或含 wrap,同时含两个词的单元格会被算两次,这时要用同时满足两个条件的 COUNTIF 把重叠部分减掉,或者借助辅助列。

COUNTIF 与 COUNT、COUNTA、COUNTBLANK 的区别

函数统计什么示例结果
COUNT含数字的单元格(日期也算数字)=COUNT(C2:C7)6
COUNTA非空单元格,任意类型=COUNTA(E2:E7)4
COUNTBLANK空单元格=COUNTBLANK(E2:E7)2
COUNTIF满足一个指定条件的单元格=COUNTIF(B2:B7,"East")3
COUNTIFS同时满足多个条件的行=COUNTIFS(B2:B7,"East",C2:C7,">1000")2

有一个细微差别:微软 COUNTBLANK 说明页提到,它也会把公式返回空文本(””)的单元格计为空,而值为 0 的单元格不算空;COUNTA 则把这类含公式的单元格视为非空。如果整列都是显示为空的 IF 公式,COUNTBLANK 的结果更符合直觉。COUNTIF 只看单元格里的内容,不看格式,所以没法按填充颜色计数。

COUNTIF 的实用搭配

  • 找重复:在 F2 输入 =COUNTIF($A$2:$A$7,A2) 并向下填充,显示 2 及以上的就是重复项,比如 Alex 的两行都显示 2。要删除重复项时,可以配合”删除重复项”功能。
  • 高亮重复:同样思路可以做条件格式规则,=COUNTIF($A$2:$A$7,A2)>1 能给重复的名字上色,具体可看站内的Excel 条件格式怎么用。
  • 做汇总:在 G10:G12 列出各地区,旁边输入 =COUNTIF($B$2:$B$7,G10) 并向下填充,就是一张快速统计表。
  • 算占比:=COUNTIF(B2:B7,"East")/COUNTA(B2:B7) 设为百分比格式,就能看出 East 占了 50% 的订单。

想知道的是这些订单的金额合计而不是数量,就用 SUMIF,范围和条件的写法相同,多一个”求和范围”参数,详见Excel 怎么对一列求和。

网页版与 Mac 版的区别

公式本身到处一样,在网页版、Mac 版、Windows 桌面版里输入 =COUNTIF(B2:B7,"East") 都得 3,区别只在周边操作:

  • 网页版:直接输入公式,或点编辑栏旁的 fx 搜索函数并填写参数。把被统计的数据放在同一工作簿,可以避免下文说的”已关闭工作簿”问题。
  • Mac 版:按 Return 结束公式;”公式 > 插入函数”会在窗口右侧打开公式生成器,而不是弹出对话框。
  • 旧版桌面版:COUNTIF 和 COUNTIFS 已存在多年,Excel 2016、2019 同样可用;文中的 SUM 配花括号和 SUMPRODUCT 写法,也可以用普通回车确认。

结果是 0、数字不对或报错怎么排查

明明有匹配项,结果却是 0

  • 多余空格或隐藏字符:“East ” 末尾多一个空格,就不等于 “East”。微软建议用 TRIM、CLEAN 清理导入的文本。快速判断:=COUNTIF(B2:B7,"*East*") 如果比 “East” 找到的更多,就说明有多余字符。
  • 数字存成了文本:从其他程序粘贴来的数字有时是文本,”>1000″ 这类比较会跳过它们。看单元格角落有没有绿色小三角,点警告图标选”转换为数字”。
  • 运算符和引用都放进了引号:把 “>G6” 改成 “>”&G6。
  • 弯引号:从文档或邮件里复制的公式可能带中文弯引号,要在 Excel 里重新输入成直引号。

公式显示成了文字,而不是数字

如果单元格显示的是 =COUNTIF(B2:B7,"East") 而不是 3,说明输入前单元格被设成了”文本”格式。在”开始”选项卡把格式改成”常规”,再点进单元格按 F2,然后回车。另外确认公式以等号开头,而不是空格。

#VALUE! 错误

微软指出,COUNTIF 引用了另一个已关闭的工作簿中的单元格时会返回 #VALUE!,打开那个工作簿后会恢复计算。COUNTIFS 出现 #VALUE!,多数是各个范围大小不一致。

#NAME? 错误

函数名拼错了(COUNTIFF、COUTIF 很常见),或文本没加引号,Excel 把 East 当成了不认识的名称。改正拼写或补上引号即可。

结果差一点点

检查是不是该用 “>=” 却写成了 “>”,标题行是否被包含在范围内,”不等于”有没有把空白格算进去;文本超过 255 字符时,用前面的变通办法。

常见问题(FAQ)

COUNTIF 能同时看多列吗?

可以,只要同一个条件适用于每个单元格。=COUNTIF(A2:E7,"Rush") 会搜索整块区域并统计每个匹配的格子。如果每列要用不同条件,改用 COUNTIFS。

能统计另一个工作表里的单元格吗?

能。在范围前写上工作表名和感叹号,如 =COUNTIF(Orders!B2:B500,"East");表名里有空格时用单引号括起来:='Q4 Orders'!B2:B500。输入公式时直接点击另一个工作表,它会自动帮您填好。

可以直接用整列 B:B 吗?

可以,新增行时也不用改公式。只要别把公式本身放进该列,并记住第 1 行的标题也会被判断。对数字影响不大,但像”East Sales”这样的标题可能被通配符搜索匹配到。

怎么统计 TRUE 或 FALSE?

直接写逻辑值,不要加引号:=COUNTIF(F2:F50,TRUE)。复选框列很常用,勾选的框存储的就是 TRUE。

Google 表格里一样用吗?

语法、运算符和通配符都一致,本文公式在 Google 表格里同样适用。插入函数的菜单不一样,但直接输入公式的方法相同。

总结

先拿上面任意一个公式在自己的数据上试试,然后把写死的条件改成单元格引用。熟练之后,需要同时满足两三个条件的报表,就用 COUNTIFS 顺势升级。