Menu

Excel COUNTIFS 函数:多条件计数

=COUNTIFS(A2:A7,"North",C2:C7,">50") 统计地区为 North 且销售额大于 50 的行。在线表格演示如何统计两个数字或两个日期之间的数量、使用“或”逻辑以及处理空白。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=COUNTIFS(A2:A7,"North",C2:C7,">50") 统计 A 列为 North 且 C 列大于 50 的行。COUNTIFS 接受成对的区域和条件,只有所有条件都成立的行才会被计入。

大于 50 的 North 订单
F2
ABCDEF
1RegionProductSalesConditionCount
2NorthApple120North, over 502
3SouthPear45North Apple2
4NorthPear80North only3
5EastApple55
6SouthApple200
7NorthApple30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

North 共有三行,其中两行大于 50,所以 F2 显示 2。把 C7 改成 90,最后一行 North 也会被计入。F3 组合了两个文本条件:North 和 Apple。

COUNTIFS 语法

=COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2], ...)
  • 每个条件都是一对:一个区域和一个条件。最多允许 127 对。
  • 条件的写法与 COUNTIF 完全相同:"North"、">50"、"<>"、"*apple*",或者用 & 把运算符和单元格连接起来,例如 ">"&F2。
  • 所有区域的大小必须相同。它们逐行读取:每个区域的第一个单元格构成一行,第二个单元格构成下一行。
  • 各条件之间用 AND 连接。“或”的写法见下文。

从 2007 版起的所有 Excel 以及 Google Sheets 都提供 COUNTIFS。

COUNTIFS 统计两个数字之间的值

要统计某个区间内的值,把同一个区域用两次,一次配下限,一次配上限。

50 到 150 之间的销售额
F4
ABCDEF
1RegionProductSalesSettingValue
2NorthApple120Min50
3SouthPear45Max150
4NorthPear80Between3
5EastApple55
6SouthApple200
7NorthApple30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

120、80 和 55 落在 50 到 150 之间,所以 F4 显示 3。修改 F2 和 F3 中的边界,计数会随之变化。">=" 和 "<=" 包含边界;用 ">" 和 "<" 则不包含。

COUNTIFS 统计两个日期之间的数量

日期的用法相同。把开始日期和结束日期放在单元格中,再与运算符连接,这样就永远不用在引号里输入日期。

2 月的订单
F4
ABCDEF
1RegionSalesDateSettingValue
2North1202026-01-05Start2026-02-01
3South452026-01-12End2026-02-28
4North802026-02-03Orders2
5East552026-02-18North orders1
6South2002026-03-02
7North302026-03-20
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

有两笔订单落在 2 月,其中一笔来自 North。F5 有三对条件:一对用于地区,两对用于日期范围。如果你的日期带有时间(2026-02-28 16:30),"<="&F3 会漏掉最后一天 0:00 之后的所有记录;改用 "<"&F3+1。

COUNTIFS 使用“或”逻辑

COUNTIFS 没有“或”。要统计大于 50 的 North 或 South 订单,给地区条件一个用大括号括起来的列表。COUNTIFS 会为每一项返回一个计数,SUM 再把它们加起来。

North 或 South,大于 50
F2
ABCDEF
1RegionProductSalesConditionCount
2NorthApple120North or South, over 503
3SouthPear45Same, two COUNTIFS3
4NorthPear80
5EastApple55
6SouthApple200
7NorthApple30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

两个公式都得到 3:两行 North 和一行 South 大于 50。列表变长时,大括号的写法更短。只在一个条件上使用列表。同一个公式中有两个列表时,它们的项会一一配对,而不是尝试所有组合,这通常不是你想要的。

如果这些项在单元格中(比如 E8:E9),=SUMPRODUCT(COUNTIFS(A2:A7,E8:E9,C2:C7,">50")) 不用大括号也能做到同样的事。

COUNTIFS 统计非空

"<>" 表示“非空”,"" 表示“空”,所以一列发货日期就能告诉你哪些订单还没有完成。

未发货和已发货的订单
F2
ABCDEF
1RegionOrderShippedConditionCount
2NorthA-1012026-01-08North, shipped2
3SouthA-102North, not shipped1
4NorthA-1032026-02-06
5EastA-1042026-02-20
6SouthA-105
7NorthA-106
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

有两笔 North 订单有发货日期,一笔没有。在 C7 中输入日期,计数就会从 F3 移到 F2。返回空字符串("")的公式既会被 "" 统计,也会被 "<>" 统计;COUNTIF 统计非空单元格介绍了解决办法。

练习:两个条件

轮到你了:South 的 Apple
F2
ABCDEF
1RegionProductSalesConditionCount
2NorthApple120South Apple
3SouthPear45
4NorthPear80
5EastApple55
6SouthApple200
7NorthApple30
8SouthApple75
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 统计地区为 South 且产品为 Apple 的行。在 F2 中写公式。

轮到你了:日期范围内的大额订单
F4
ABCDEF
1RegionSalesDateSettingValue
2North1202026-01-05Start2026-01-01
3South1452026-01-12End2026-02-28
4North802026-02-03Count
5East1552026-02-18
6South2002026-03-02
7North302026-03-20
8West1102026-02-25
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 统计从 F2 中的日期到 F3 中的日期(两端都包含)之间、销售额至少为 100 的订单。在 F4 中写公式。

为什么 COUNTIFS 返回 #VALUE! 或 0

  • 区域大小不一致。 =COUNTIFS(A2:A7,"North",C2:C6,">50") 返回 #VALUE!,因为 A2:A7 有六个单元格,而 C2:C6 只有五个。让每个区域都在相同的行开始和结束。
  • 一个永远不可能成立的 AND。 =COUNTIFS(A2:A7,"North",A2:A7,"South") 始终为 0:一个单元格不可能同时是两者。这其实是“或”,请使用上面的大括号写法。
  • 在引号中输入了日期。 ">=1/2/2026" 会按照你的系统日期顺序来解读。把日期放在单元格中,写成 ">="&F2。
  • 运算符和单元格都写在了引号里。 ">=F2" 是在与文本 F2 比较。应写成 ">="&F2。

COUNTIFS 统计的是行数。要对同样的行累加某一列,SUMIFS 的参数几乎完全相同;对于 COUNTIFS 无法表达的条件(拿一列与另一列比较、对每一行做计算),使用 SUMPRODUCT。

常见问题

COUNTIF 和 COUNTIFS 有什么区别?

COUNTIF 只接受一个区域和一个条件。COUNTIFS 接受任意多对区域和条件,并统计所有条件都成立的行:=COUNTIFS(A2:A7,"North",C2:C7,">50")。只有一对时,COUNTIFS 的结果与 COUNTIF 相同。

如何用 COUNTIFS 统计两个日期之间的数量?

把日期列用两次,每次配一个边界:=COUNTIFS(C2:C7,">="&F2,C2:C7,"<="&F3) 统计从 F2 到 F3 的日期,两端都包含。

COUNTIFS 如何实现“或”条件?

COUNTIFS 总是用 AND 连接各个条件。要实现“或”,给其中一个条件一个用大括号括起来的列表,再把结果相加:=SUM(COUNTIFS(A2:A7,{"North","South"},C2:C7,">50"))。

COUNTIFS 为什么返回 #VALUE!?

各个区域的大小不一致。COUNTIFS 中的每个区域都必须有相同的行数和列数,所以 A2:A7 不能和 C2:C6 配对。

如何用 COUNTIFS 统计两个数字之间的值?

把同一个区域用两次,每次配一个边界:=COUNTIFS(C2:C7,">=50",C2:C7,"<=150") 统计从 50 到 150 的值,两端都包含。用 ">" 和 "<" 则不包含边界。

Coddy 编程语言插图

和 Coddy 一起学编程

开始