COUNTIF 做一件事:数一数满足条件的单元格有几个。"这批订单里有多少是已发货的?""技术部有多少人?""成绩表里 90 分以上有几个?"——这些都是 COUNTIF 的典型场景。
COUNTIF 处理单条件,COUNTIFS 处理多条件。两个函数语法几乎一样,学会一个就全会了。
COUNTIF:单条件计数
语法:=COUNTIF(范围, 条件)
场景一:统计某个部门的人数
| 姓名 | 部门 |
|---|---|
| 张三 | 技术部 |
| 李四 | 销售部 |
| 王五 | 技术部 |
| 赵六 | 市场部 |
| 钱七 | 技术部 |
=COUNTIF(B:B, "技术部") → 结果:3
意思是:在 B 列中,数一数值等于"技术部"的单元格有几个。
场景二:统计 60 分以上有几人
=COUNTIF(C:C, ">=60") → 统计 C 列中 ≥60 的单元格数量
注意:当条件包含比较运算符(>、<、>=、<=、<>)时,整个条件必须用英文双引号包裹,包括运算符。写成 =COUNTIF(C:C, >=60)(不带引号)会报错。
场景三:统计包含某关键词的项目
=COUNTIF(A:A, "*设计*") → 统计 A 列中包含"设计"两个字的单元格数量
星号 * 是通配符,代表任意字符。"*设计*" 表示"前后有任意字符,中间包含设计"。还有一个通配符 ? 代表单个字符:"张?" 匹配"张三"、"张五"但不匹配"张三丰"。
场景四:统计非空单元格
=COUNTIF(A:A, "<>") → 统计 A 列中非空的单元格数量
<> 是"不等于"运算符,"<>" 表示"不等于空"。注意这会把空格(看起来像空但其实有内容)也算进去。如果想统计纯空单元格数量,用 =COUNTBLANK(A:A)。
场景五:统计重复值出现次数
在数据旁边写 =COUNTIF(A:A, A2),然后往下拖——每一行会显示该值在 A 列中出现了几次。出现次数 >1 的就是重复值。这是 Excel 中查找重复数据最简单的方法。
COUNTIFS:多条件计数
语法:=COUNTIFS(范围1, 条件1, 范围2, 条件2, ...)
COUNTIFS 要求所有条件同时满足才计入。
统计技术部中工资 >8000 的人数:
=COUNTIFS(B:B, "技术部", C:C, ">8000")
统计 3 月份已发货的订单数:
=COUNTIFS(A:A, ">="&DATE(2026,3,1), A:A, "<"&DATE(2026,4,1), D:D, "已发货")
注意这里 A 列(日期列)出现了两次——一次用 >= 指定起始日期,一次用 < 指定结束日期,两个条件叠加形成日期范围筛选。
COUNTIF vs COUNTIFS vs COUNTA
| 函数 | 用途 | 示例 |
|---|---|---|
| COUNTIF | 单条件计数 | =COUNTIF(B:B,"技术部") |
| COUNTIFS | 多条件计数 | =COUNTIFS(B:B,"技术部",C:C,">8000") |
| COUNTA | 非空计数(无条件) | =COUNTA(A:A) |
| COUNT | 纯数字计数 | =COUNT(C:C) 只统计数字,忽略文本和空格 |
| COUNTBLANK | 空单元格计数 | =COUNTBLANK(A:A) |
实战公式速查
| 需求 | 公式 |
|---|---|
| 某个值出现了几次 | =COUNTIF(A:A, "目标值") |
| 大于某个数的有几个 | =COUNTIF(C:C, ">100") |
| 包含某关键词的有几个 | =COUNTIF(A:A, "*关键词*") |
| 去重后有多少不同的值 | =SUMPRODUCT(1/COUNTIF(A2:A100,A2:A100)) |
| 某部门某月的订单数 | =COUNTIFS(部门列,"销售部",日期列,">="&起始日期,日期列,"<"&结束日期) |
| 两列都满足条件的行数 | =COUNTIFS(B:B,"条件1",C:C,"条件2") |
COUNTIF 配合条件格式:高亮重复值
COUNTIF 不仅能在公式里用,还能配合条件格式自动高亮重复数据。操作步骤:选中数据区域 → 开始 → 条件格式 → 新建规则 → 使用公式确定格式 → 输入 =COUNTIF($A:$A,$A2)>1 → 设置高亮颜色。
这样所有出现超过 1 次的值都会自动标红。修改数据后高亮会实时更新。在清洗数据、检查导入是否有重复记录时非常实用。
跟对账工具的配合
如果你用 COUNTIF 是为了检查两张表的数据是否一致(比如检查 A 表的订单号是否都在 B 表中出现),可以直接用 Data Diff Lab(数据对账)——上传两张表,选主键,工具自动告诉你哪些行只在 A 表有、哪些只在 B 表有、哪些值不一致。不需要手写 COUNTIF 或 VLOOKUP。
COUNTIF 适合简单的单列统计;当你需要多列对比、批量核对时,专用的对账工具效率更高。详见 《两张Excel对不上?2种对账方式一文搞懂》。
常见错误
条件写法错误
运算符必须包在引号里:">=60" 是对的,>=60(不带引号)是错的。如果条件引用单元格,用拼接:">"&E1(E1 里填数字)。
范围大小不一致(COUNTIFS)
COUNTIFS 的所有条件范围必须大小相同。=COUNTIFS(A1:A100,"条件1",B1:B50,"条件2") 会报错——A 列 100 行,B 列只有 50 行。解决方法:统一用整列(A:A, B:B)或确保行数一致。
文本数字混淆
如果 B 列的数据看起来是数字但实际是文本格式(常见于从系统导出的数据),=COUNTIF(B:B, ">60") 不会统计这些"文本数字"。在 B 列任意空单元格输入 0,复制,然后选中 B 列数据 → 选择性粘贴 → 加 → 确定,可以强制转换为数字格式。
通配符想当普通字符用
如果你要统计的文本本身包含星号或问号(比如"5*3=15"),需要用波浪号转义:=COUNTIF(A:A, "*5~*3*"),~* 表示"真正的星号"。
COUNTIF 的性能问题
在大数据量(10 万行以上)中使用 COUNTIF 时要注意性能:
避免整列引用做条件判断:=COUNTIF(A:A, A2) 写在每一行,相当于每行都要扫描整个 A 列,10 万行数据就是 10 万次全列扫描。如果 Excel 变卡,把范围改为固定范围:=COUNTIF($A$2:$A$100000, A2)。
COUNTIFS 比多个 COUNTIF 相乘更快:有些人用 =COUNTIF(A:A,"条件1")*COUNTIF(B:B,"条件2") 来模拟多条件——这不仅结果可能不对(两个独立计数相乘 ≠ 同时满足的计数),而且比 COUNTIFS 慢。
数据透视表更适合大规模统计:如果你需要按多个维度交叉统计,与其写一堆 COUNTIF/COUNTIFS 公式,不如直接用数据透视表——拖拽字段出结果,Excel 内部优化过,速度快得多。详见 《数据透视表入门:3分钟把明细表变成汇总报表》。