想知道表格里”华东订单有几单””销售额超过 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:备注 |
|---|---|---|---|---|---|
| 2 | Alex | East | 1200 | 2026/9/3 | Rush |
| 3 | Priya | West | 850 | 2026/9/15 | |
| 4 | Jordan | east | 2400 | 2026/10/2 | Gift wrap |
| 5 | Sam | North | 450 | 2026/10/9 | Call first |
| 6 | Alex | West | 1750 | 2026/10/20 | |
| 7 | Taylor | East | 600 | 2026/10/22 | Rush |
第 1 行是标题,写公式时别把标题行包含进范围,免得它被一起判断。
写出第一个 COUNTIF 公式
目标:数一数 East 地区有几单。
- 点数据外面的空单元格,比如 G2。公式放在被统计的范围内部会造成循环引用。
- 输入
=COUNTIF(,Excel 会弹出参数提示。 - 拖选 B2 到 B7,或直接输入 B2:B7。
- 输入逗号。
- 输入带双引号的 “East”。
- 输入右括号,单元格里就是
=COUNTIF(B2:B7,"East")。 - 按回车(Mac 按 Return),结果是 3。
为什么是 3 而不是 2?因为 Jordan 的地区写成了小写的 east,而 COUNTIF 不区分大小写,East、east、EAST 被当成同一个值。
不想手输的话,Windows 版 Excel 有向导:点结果单元格,依次选”公式 > 其他函数 > 统计 > COUNTIF”(或点编辑栏旁边的 fx 搜索),弹出的函数参数窗口里有”区域”和”条件”两个框,点确定前还能预览结果。Mac 上从”公式 > 插入函数”打开右侧的公式生成器,用法一样。

统计符合指定文本的单元格
| 目标 | 公式 | 结果 |
|---|---|---|
| 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)

结果是 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")

结果是 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 顺势升级。