同时「量大」又「发货快」的订单有几张(SUMPRODUCT)
测试用例
1
2
3
重置
提交
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。
测试用例
1
2
3
重置
提交
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。
题目
题目说明
采购要找出「超过 100 件、又在 5 天内发货」的订单。件数在 B2:B6、发货天数在 C2:C6,门槛写在表上(E1、E2)。把数量填进 Both 单元格 F3。
一条公式要同时处理两个条件——不能用辅助列,也不能把两个计数相加。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | C | E | |
|---|---|---|---|---|
| 1 | Order | Units | Days to ship | Units > 100 |
| 2 | SO-1 | 120 | 4 | Days < 5 |
| 3 | SO-2 | 80 | 9 | Both |
| 4 | SO-3 | 300 | 3 | |
| 5 | SO-4 | 60 | 7 | |
| 6 | SO-5 | 210 | 2 |
知识点
SUMPRODUCT((B2:B6>100)*(C2:C6<5)) 先把两个 TRUE/FALSE 数组相乘。相乘就是 AND(1*1 = 1,任何一边是 0 就是 0),SUMPRODUCT 再把乘积求和,得到同时成立的行数。COUNTIFS 用条件字符串做同一件事,比较式简单时更好读。
解题思路
答案写在 F3。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 F3
- 先做出两个 TRUE/FALSE 数组:B2:B6>100 与 C2:C6<5
- 相乘之后只留下两边都成立的行
- 公式形状:=SUMPRODUCT((?)*(?))
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:两个布尔数组相乘
=SUMPRODUCT((B2:B6>100)*(C2:C6<5))
SO-1(120, 4)、SO-3(300, 3)、SO-5(210, 2)都成立,1+0+1+0+1 = 3。相乘是 AND,SUMPRODUCT 负责计数。
解法 2:COUNTIFS 搭配两个数值条件
=COUNTIFS(B2:B6, ">100", C2:C6, "<5")
用条件字符串得到同样答案。门槛单纯时 COUNTIFS 更好读;条件里需要函数(LEFT、MONTH、ISNUMBER)时,SUMPRODUCT 才写得出来。
函数指南
常见问题
怎么统计同时符合两个数值条件的行?
=SUMPRODUCT((区域1>a)*(区域2<b)),或 =COUNTIFS(区域1, ">"&a, 区域2, "<"&b)。两者都只算全部条件都成立的行。
为什么 SUMPRODUCT 一定要那些括号?
少了括号,比较式的结合方式会不同:SUMPRODUCT(B2:B6>100) 只会评估第一个元素。把每个比较括起来,才能先得到完整数组再相乘。