COUNTIF 看起来只是"数个数",其实能做去重计数、查重、判断是否录入、排名。这篇用一张员工名单,把 COUNTIF 的六种用法一次讲完。
COUNTIF(条件区域, 条件)
用途数一数在某个区域里,满足条件的有几个。
这是 SUMIF 的孪生兄弟。 还没学过 SUMIF 的话先看 SUMIF 怎么用,两篇一起吃,五分钟搞定。
参数结构几乎一样,只是少了一个"求和区域"——因为它的结果本来就是个数字(个数),不需要再去别处取数。
所以如果你已经会 SUMIF,这篇你可以用五分钟看完。
先看表:公司员工名单
| 姓名 | 性别 | 部门 | 学历 |
|---|---|---|---|
| 张三 | 男 | 技术部 | 本科 |
| 李四 | 男 | 市场部 | 本科 |
| 王五 | 男 | 技术部 | 硕士 |
| 赵六 | 女 | 财务部 | 本科 |
| 麻七 | 女 | 技术部 | 大专 |
| 张三 | 男 | 技术部 | 本科 |
HR 会问的问题:男员工几个?技术部几个?本科以上几个?有没有重名?
全是 COUNTIF。
关键如果你连「先学哪个函数」都还没想好,建议从 Excel 最值得先学的 10 个函数 开始,那里按使用频率排了顺序。
用法一:数"等于某个值"的
男员工人数:
=COUNTIF(B2:B7, "男")
技术部人数:
=COUNTIF(C2:C7, "技术部")
结构和 SUMIF 完全一样:在哪儿数 + 数什么。
用法二:数"大于/小于"的
这个用不了几次,但要用的时候很救命。比如数"销售额超过 30 的":
=COUNTIF(D2:D7, ">30")
和 SUMIF 一样,符号必须在引号里。
常用的几个:
| 想数什么 | 写法 |
|---|---|
| 大于 30 | `">30"` |
| 大于等于 30 | `">=30"` |
| 小于 100 | `"<100"` |
| 不等于"未完成" | `"<>未完成"` |
| 空白单元格 | `""` |
| 非空白 | `"<>"` |
关键最后两个特别有用:`""` 数的是"空着的格子有几个"(比如还没填结果的),`"<>"` 数的是"填了东西的有几个"。
用法三:条件放在单元格里
=COUNTIF(C2:C7, F1)
F1 里写"技术部",结果就变。同样的规矩:引用不加引号。
带符号就拼接:
=COUNTIF(D2:D7, ">"&F1)
用法四:查重(这个最实用)
判断某个名字有没有重复出现:
=COUNTIF($A$2:$A$7, A2)
结果是 1 表示只有一次,2 表示重复了。往下拖,重复的都会显示 2 以上。
再加上 IF,直接标出来:
=IF(COUNTIF($A$2:$A$7, A2)>1, "重复", "")
关键注意 `$A$2:$A$7` 必须加 `$`。因为你要始终在整个名单里找,而不是随着拖动缩小范围。这一条是查重公式的关键。
用法五:判断"是否已录入"
做数据录入的时候,想立刻知道"这个人是不是已经填过了":
=IF(COUNTIF($A$2:$A$7, A2)>0, "已录入", "")
因为 COUNTIF 结果大于 0 就说明存在。这个写法在名单核对、报名表查漏时特别好用。
关键为什么用 `>0` 而不是 `>1`:如果你在录入时就检查(当前格还没算进去),`>0` 更合适。如果是事后查重,用 `>1`。
用法六:数"不重复的有几个"
这个稍微绕,但很值得学。
技术部有几个不同的学历?
=SUMPRODUCT((C2:C7="技术部")*(1/COUNTIF(D2:D7, D2:D7)))
思路拆解:
- `COUNTIF(D2:D7, D2:D7)` —— 每个学历在这一列出现了几次
- `1/` 这个结果 —— 出现 3 次的变成 1/3,出现 1 次的变成 1
- 加起来 —— 3 个 1/3 正好等于 1,也就是"算一次"
关键这是经典的去重计数套路。它有个前提:区域内不能有空白单元格(会除以 0 报错)。如果有空白,改用 `SUMPRODUCT((区域<>"")/COUNTIF(区域,区域&""))`。
COUNTIF 的局限,得说清楚
COUNTIF 一次只能一个条件。 要"技术部 + 本科"这样两个条件同时满足,得用 COUNTIFS:
=COUNTIFS(C2:C7, "技术部", D2:D7, "本科")
COUNTIFS 的参数顺序是"成对出现":区域1、条件1、区域2、条件2……
关键注意:COUNTIFS 没有"求和区域"这个概念,所以不存在 SUMIFS 那种顺序反转的坑。这一点比 SUMIF/SUMIFS 那对友好。
六个用法速查
| 想做什么 | 公式 |
|---|---|
| 数男员工 | `=COUNTIF(B:B,"男")` |
| 数大于 30 的 | `=COUNTIF(D:D,">30")` |
| 条件在单元格 | `=COUNTIF(C:C,F1)` |
| 查重 | `=COUNTIF($A$2:$A$7,A2)` |
| 判断是否已录入 | `=IF(COUNTIF($A$2:$A$7,A2)>0,"已录入","")` |
| 多条件计数 | `=COUNTIFS(区域1,条件1,区域2,条件2)` |
一句话总结
COUNTIF 就是"在某一列里数一数符合条件的有几个"。条件带符号放引号,条件在格子别加引号,查重记得区域要按 F4 锁住。
关键配合着看:SUMIF 那篇讲透了"条件怎么写",这篇就不再重复。两个函数共用同一套条件语法,学会一个,另一个白送。
评论 0