统计华东区有多少订单、本月有多少条记录、某个编号出现了几次、某列有多少个非空值。COUNTIFS 和 SUMIFS 的参数结构类似,区别是它只数个数,不求和。
=COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2], ...)
所有条件之间是“且”。每个条件区域的行列数必须一致,否则返回 #VALUE!。
=COUNTIF(range, criteria)
只有一个条件。适合统计单列里的重复次数、空白数、包含某关键词的个数。
| 条件 | 写法 | 说明 |
|---|---|---|
| 等于文本 | "华东" |
加英文双引号 |
| 等于单元格 | E2 |
不加引号 |
| 大于 | ">10000" |
比较符和数值一起放引号里 |
| 大于单元格 | ">"&E2 |
用 & 拼接 |
| 介于 | ">=1000"、"<=5000" |
两个条件 |
| 不等于 | "<>华东" |
排除 |
| 非空 | "<>" |
有值的单元格 |
| 空 | "" |
空白单元格 |
| 包含 | "*A*" |
* 任意字符 |
| 单字符 | "A?" |
? 一个字符 |
| 包含星号 | "~*" |
~ 转义 |
=COUNTIFS(A:A,">="&DATE(2026,1,1),A:A,"<="&DATE(2026,1,31))
=COUNTIFS(A:A,">="&EOMONTH(TODAY(),-1)+1,A:A,"<="&EOMONTH(TODAY(),0))
日期列必须是真正的日期值;文本日期匹配不到。
假设 A 列地区、B 列产品、C 列金额、D 列日期:
华东区订单数
=COUNTIFS(A:A,"华东")
华东区 A 产品订单数
=COUNTIFS(A:A,"华东",B:B,"A")
本月订单数
=COUNTIFS(D:D,">="&EOMONTH(TODAY(),-1)+1,D:D,"<="&EOMONTH(TODAY(),0))
金额大于 10000 的订单数
=COUNTIFS(C:C,">10000")
A 列有多少个非空值
=COUNTIF(A:A,"<>")
A 列有多少个空白
=COUNTIF(A:A,"")
=COUNTIF($A$2:$A$100,A2)
结果大于 1 说明 A2 在区域内重复。配合条件格式可以高亮重复项,见 excel-conditional-formatting。
=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&""))
COUNTIF 先算出每个值出现的次数,1/次数 让每个唯一值贡献 1,SUMPRODUCT 再加总。范围里有空白时,&"" 和 <>"" 用来避免除零。
Excel 365/2021 可以直接用:
=COUNTA(UNIQUE(A2:A100))
COUNTIFS 的条件是“且”。要统计“华东或华南”,可以:
=SUM(COUNTIF(A:A,{"华东","华南"}))
或者拆成两个 COUNTIF 相加。多个条件组合的“或”用 SUMPRODUCT 写会更灵活,但可读性较差。
COUNTIFS 的每个区域行列数必须相同,否则 #VALUE!。COUNTIF(C:C,">10000") 不会把文本数字算进去;先转换类型。DATE() 条件匹配不到文本日期。"" 和 "<>" 的含义相反:"" 统计空白,"<>" 统计非空;不要凭感觉写。"*" 不会按预期匹配。A:A 会扫描上百万行;数据量大时限定实际范围。COUNTIF 对长数字有精度限制:超过 15 位的编号可能被当成相同值;编号列设为文本,或改用 SUMPRODUCT(--(A2:A100=E2))。合上页面,先回答,再展开对照。
COUNTIFS 的条件之间是“且”还是“或”?COUNTIF(A:A,"") 和 COUNTIF(A:A,"<>") 分别统计什么?COUNTIF 可能统计不准?
小程序版
微信扫码,随时查命令