同時「量大」又「出貨快」的訂單有幾張(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) 只會評估第一個元素。把每個比較括起來,才能先得到完整陣列再相乘。