COUNTIFS / COUNTIF 条件计数:去重、区间、通配符与多条件统计

适用场景

统计华东区有多少订单、本月有多少条记录、某个编号出现了几次、某列有多少个非空值。COUNTIFS 和 SUMIFS 的参数结构类似,区别是它只数个数,不求和。

语法

COUNTIFS

=COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2], ...)

所有条件之间是“且”。每个条件区域的行列数必须一致,否则返回 #VALUE!。

COUNTIF

=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 写会更灵活,但可读性较差。

易错点

相关条目

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. COUNTIFS 的条件之间是“且”还是“或”?
  2. COUNTIF(A:A,"") 和 COUNTIF(A:A,"<>") 分别统计什么?
  3. 为什么超过 15 位的编号用 COUNTIF 可能统计不准?
答案
  1. 是“且”;要“或”需要用数组常量或拆成多个公式相加。
  2. 前者统计空白单元格,后者统计非空单元格。
  3. Excel 数字精度只有 15 位,长编号后几位会被忽略,可能被当成相同值;应把编号设为文本。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令