=COUNTIFS(A2:A7,"North",C2:C7,">50") 统计 A 列为 North 且 C 列大于 50 的行。COUNTIFS 接受成对的区域和条件,只有所有条件都成立的行才会被计入。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Condition | Count | |
| 2 | North | Apple | 120 | North, over 50 | 2 | |
| 3 | South | Pear | 45 | North Apple | 2 | |
| 4 | North | Pear | 80 | North only | 3 | |
| 5 | East | Apple | 55 | |||
| 6 | South | Apple | 200 | |||
| 7 | North | Apple | 30 |
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 统计两个数字之间的值
要统计某个区间内的值,把同一个区域用两次,一次配下限,一次配上限。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Setting | Value | |
| 2 | North | Apple | 120 | Min | 50 | |
| 3 | South | Pear | 45 | Max | 150 | |
| 4 | North | Pear | 80 | Between | 3 | |
| 5 | East | Apple | 55 | |||
| 6 | South | Apple | 200 | |||
| 7 | North | Apple | 30 |
120、80 和 55 落在 50 到 150 之间,所以 F4 显示 3。修改 F2 和 F3 中的边界,计数会随之变化。">=" 和 "<=" 包含边界;用 ">" 和 "<" 则不包含。
COUNTIFS 统计两个日期之间的数量
日期的用法相同。把开始日期和结束日期放在单元格中,再与运算符连接,这样就永远不用在引号里输入日期。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Sales | Date | Setting | Value | |
| 2 | North | 120 | 2026-01-05 | Start | 2026-02-01 | |
| 3 | South | 45 | 2026-01-12 | End | 2026-02-28 | |
| 4 | North | 80 | 2026-02-03 | Orders | 2 | |
| 5 | East | 55 | 2026-02-18 | North orders | 1 | |
| 6 | South | 200 | 2026-03-02 | |||
| 7 | North | 30 | 2026-03-20 |
有两笔订单落在 2 月,其中一笔来自 North。F5 有三对条件:一对用于地区,两对用于日期范围。如果你的日期带有时间(2026-02-28 16:30),"<="&F3 会漏掉最后一天 0:00 之后的所有记录;改用 "<"&F3+1。
COUNTIFS 使用“或”逻辑
COUNTIFS 没有“或”。要统计大于 50 的 North 或 South 订单,给地区条件一个用大括号括起来的列表。COUNTIFS 会为每一项返回一个计数,SUM 再把它们加起来。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Condition | Count | |
| 2 | North | Apple | 120 | North or South, over 50 | 3 | |
| 3 | South | Pear | 45 | Same, two COUNTIFS | 3 | |
| 4 | North | Pear | 80 | |||
| 5 | East | Apple | 55 | |||
| 6 | South | Apple | 200 | |||
| 7 | North | Apple | 30 |
两个公式都得到 3:两行 North 和一行 South 大于 50。列表变长时,大括号的写法更短。只在一个条件上使用列表。同一个公式中有两个列表时,它们的项会一一配对,而不是尝试所有组合,这通常不是你想要的。
如果这些项在单元格中(比如 E8:E9),=SUMPRODUCT(COUNTIFS(A2:A7,E8:E9,C2:C7,">50")) 不用大括号也能做到同样的事。
COUNTIFS 统计非空
"<>" 表示“非空”,"" 表示“空”,所以一列发货日期就能告诉你哪些订单还没有完成。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Order | Shipped | Condition | Count | |
| 2 | North | A-101 | 2026-01-08 | North, shipped | 2 | |
| 3 | South | A-102 | North, not shipped | 1 | ||
| 4 | North | A-103 | 2026-02-06 | |||
| 5 | East | A-104 | 2026-02-20 | |||
| 6 | South | A-105 | ||||
| 7 | North | A-106 |
有两笔 North 订单有发货日期,一笔没有。在 C7 中输入日期,计数就会从 F3 移到 F2。返回空字符串("")的公式既会被 "" 统计,也会被 "<>" 统计;COUNTIF 统计非空单元格介绍了解决办法。
练习:两个条件
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Condition | Count | |
| 2 | North | Apple | 120 | South Apple | ||
| 3 | South | Pear | 45 | |||
| 4 | North | Pear | 80 | |||
| 5 | East | Apple | 55 | |||
| 6 | South | Apple | 200 | |||
| 7 | North | Apple | 30 | |||
| 8 | South | Apple | 75 |
轮到你了: 统计地区为 South 且产品为 Apple 的行。在 F2 中写公式。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Sales | Date | Setting | Value | |
| 2 | North | 120 | 2026-01-05 | Start | 2026-01-01 | |
| 3 | South | 145 | 2026-01-12 | End | 2026-02-28 | |
| 4 | North | 80 | 2026-02-03 | Count | ||
| 5 | East | 155 | 2026-02-18 | |||
| 6 | South | 200 | 2026-03-02 | |||
| 7 | North | 30 | 2026-03-20 | |||
| 8 | West | 110 | 2026-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 的值,两端都包含。用 ">" 和 "<" 则不包含边界。