Excel COUNT / COUNTA / COUNTBLANK 怎么统计单元格个数
收集了一批问卷、想知道多少人填了某题?或者想查有多少格子是空的?Excel 里统计单元格个数有三个专用函数:COUNT、COUNTA、COUNTBLANK。三个名字长得像,行为却截然不同。本文把它们的区别讲清楚,再告诉你用超级表分组计数能更省事地得到同样结果。
三个计数函数的区别
先把三者的核心差异一句话说清:
- COUNT:只数数字类型的单元格,文本、逻辑值、空格全部跳过。
- COUNTA:只数非空单元格,不管里面是数字、文字、日期、逻辑值还是错误值,只要不是空的就数。
- COUNTBLANK:只数空白单元格,包括真空格和空字符串
""。
COUNT —— 只数数字
语法:=COUNT(range)
假设 A2:A8 里有 3 个数字(100、200、300)、2 个文字("张三"、"李四")、1 个空格、1 个错误值 #VALUE!:
=COUNT(A2:A8) 返回 3——只数出那三个数字,其余全跳过。
典型用法:统计一列成绩中有多少人已填写了分数(分数是数字,未填是空或文字)。
COUNTA —— 数非空
语法:=COUNTA(range)
同样是 A2:A8(3 数字 + 2 文字 + 1 空格 + 1 错误值):
=COUNTA(A2:A8) 返回 6——空格那一格不算,其余六格都不是空的,全数上。
注意:错误值 #VALUE! 也被视为"有内容",会被计入。如果想排除错误值,需要配合 IFERROR 先处理数据,或改用 COUNTIF。
典型用法:统计问卷中某题有多少人作答(不管答的是什么)。
COUNTBLANK —— 数空白
语法:=COUNTBLANK(range)
同样是 A2:A8:
=COUNTBLANK(A2:A8) 返回 1——只有那个真空格被数到。
典型用法:统计问卷中有多少题没有作答,即漏填检查。
""(用公式产生的"假空")被 COUNTBLANK 视为空白,但被 COUNTA 视为非空。如果你的数据来自公式输出(如 =IF(condition,"","值")),统计结果可能和直觉不符——下面的"易错点"一节会详细讲。
三个函数配合用:COUNTA − COUNTBLANK 验证
一个实用技巧:把 COUNTA、COUNTBLANK、COUNT 结合在一起,可以快速验证数据完整性。
假设 B2:B101 是 100 行问卷里"手机号"这一列:
=COUNTA(B2:B101)得到非空个数(有填的行)=COUNTBLANK(B2:B101)得到空白个数(未填的行)- 两者相加应该等于 100——否则说明范围选错了或数据有问题。
换句话说:COUNTA + COUNTBLANK = 总行数,这个等式是一个快速健全性检查。
如果你还想按条件计数(比如"手机号列中以 138 开头的有多少"),那就需要 COUNTIF / COUNTIFS 了。
容易踩的易错点
COUNT 不数文本
这是最常见的误用:有人以为 COUNT 就是"数个数",对所有内容都生效。实际上,下面这列:
苹果 / 香蕉 / 橙子 / 葡萄
=COUNT(A1:A4) 返回 0,因为没有一个数字。要数这四行,得用 COUNTA。
空字符串 "" 算不算空?
这是最容易出 bug 的地方。当一个单元格里有公式 =IF(A1="","",A1*2),条件成立时它输出空字符串 ""。此时:
COUNTA认为它非空(有内容,只是内容是空字符串),会把它计入。COUNTBLANK认为它是空(内容等效于空白),会把它计入。
结果:COUNTA + COUNTBLANK 之和可能大于实际总行数。碰到这种情况,检查一下数据列里是否有公式产生的 ""。
COUNT 会把日期和时间算进去
Excel 里日期和时间本质是数值,所以 COUNT 会把日期格式的单元格也数进去。如果你只想数"纯数字"而排除日期,需要额外加条件判断,或直接改用 COUNTIF 配合数值范围条件。
更简单:用超级表分组计数,不用写函数
超级表(TableDI)是一款桌面高能表格助手,macOS / Windows 均可用,离线本地运行,不用登录。它内置分组汇总功能,其中"计数"和"非空计数"两种聚合方式直接对应 COUNTA 和 COUNT 的常用场景,不需要写任何函数。操作步骤:
- 把数据表导入超级表(Excel / CSV 文件直接拖进来即可)。
- 在工具栏找到分组,选择一列作为分组维度(比如「城市」或「部门」)。
- 在汇总行选择聚合方式:选计数得到每组总行数;选非空计数则只统计该列非空的行数。
- 结果实时显示,不需要写
COUNTA或手拖公式。改数据后汇总自动刷新。
比如统计「各城市的问卷填写人数(手机号非空的行)」,在 Excel 里要写一个带条件的 COUNTIF,在超级表里按城市分组再选非空计数就搞定了。想同时统计多个维度?再加一层分组即可。
COUNT 系函数 vs 超级表分组计数对照
| 需求 | Excel 函数 | 超级表 |
|---|---|---|
| 数数字个数 | COUNT(range) | 分组 → 计数(数字列) |
| 数非空个数 | COUNTA(range) | 分组 → 非空计数 |
| 数空白个数 | COUNTBLANK(range) | 计数 − 非空计数 |
| 按条件计数 | COUNTIF / COUNTIFS | 先筛选 / 分组,再计数 |
| 多维度分组统计 | 需要数据透视表 | 多级分组即可 |
| 数据更新后 | 公式范围需手动调整 | 自动刷新 |
常见问题
COUNT 和 COUNTA 有什么区别?
COUNT 只统计范围内数字格式的单元格个数,文本、逻辑值、空格全部跳过。COUNTA 统计所有非空单元格,不管内容是数字、文字还是日期,只要不是空的就数进去。实际中,如果你的数据列混有文字和数字(比如姓名列),应该用 COUNTA 而不是 COUNT。
怎么按条件计数,比如只数大于 60 的?
这时候 COUNT 和 COUNTA 都不够用,要上 COUNTIF / COUNTIFS。比如统计 A 列中大于 60 的数字个数:=COUNTIF(A:A,">60")。多条件(比如大于 60 且小于 80)就用 COUNTIFS:=COUNTIFS(A:A,">60",A:A,"<80")。
怎么统计非重复的个数?
COUNT 系函数不去重,同一个值出现多次会被数多次。要统计不重复项有多少个,可以用 SUMPRODUCT(1/COUNTIF(range,range)) 的经典写法,或参考 COUNTIF 怎么统计非重复个数一文;也可以用超级表的去重功能先去重再计数,更直观。想了解按条件求和,可以参考 SUMIF / SUMIFS 按条件求和。