已付還是未付?(SUMIFS + IF)
測試案例
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
○ 就緒 請在反白的目標儲存格輸入公式,然後點「提交」。
題目
題目說明
月結對帳:發票清單在 A2:B5,付款紀錄在 D2:E8,同一張發票可能分好幾次付款。針對 A2 這張發票,把「Paid」或「Outstanding」填進 Status 儲存格 G2。
要看的是「這張發票的付款總額」,不是「有沒有一筆付款」——一筆分期不足以結清 500 的發票。
題目資料
用表格檢視整份資料(可選取、可複製)
| A | B | D | E | G | |
|---|---|---|---|---|---|
| 1 | Invoice | Invoiced | Invoice | Paid | Status |
| 2 | INV-501 | 500 | INV-501 | 200 | |
| 3 | INV-502 | 320 | INV-501 | 300 | |
| 4 | INV-503 | 180 | INV-502 | 120 | |
| 5 | INV-504 | 900 | INV-503 | 180 | |
| 6 | INV-504 | 400 | |||
| 7 | INV-504 | 400 | |||
| 8 | INV-502 | 200 |
觀念解析
付款紀錄裡一張發票會有很多列,VLOOKUP 只會抓到第一筆。SUMIFS 把整份紀錄收斂成一張發票一個總額,再用 IF 轉成狀態。部分付款必須落在 Outstanding,所以比較要用 >= 對發票金額。
解題思路
答案寫在 G2。送出時我們會換 3 組輸入重跑你的公式,寫死數字一定過不了 —— 公式必須跟著儲存格走。
- 目標儲存格是 G2
- 先把付款紀錄依 A2 加總:SUMIFS
- 再拿這個總額和 B2 比
- 公式形狀:=IF(?, ?, ?)——條件是一個比較,不是查表
官方解法
展開 2 種解法(建議先自己試一次)
解法 1:SUMIFS 放進 IF
=IF(SUMIFS($E$2:$E$8, $D$2:$D$8, A2) >= B2, "Paid", "Outstanding")
INV-501 有兩筆付款 200 + 300 = 500,剛好等於發票金額 500,所以是 Paid。把其中一筆改小,同一條公式就變成 Outstanding。
解法 2:SUMIF,加總範圍放最後
=IF(SUMIF($D$2:$D$8, A2, $E$2:$E$8) >= B2, "Paid", "Outstanding")
SUMIF 的第一個參數是條件範圍、最後才是加總範圍,其餘邏輯相同。把這兩個範圍對調,就是最常見的 SUMIF/SUMIFS 混淆。
函數指南
常見問題
怎麼判斷一張發票是否付清?
把該發票的付款加總後與發票金額比較:=IF(SUMIFS(付款金額, 發票欄, 發票號) >= 發票金額, "Paid", "Outstanding")。
為什麼不能用 VLOOKUP 查付款紀錄?
VLOOKUP 只回傳第一筆符合的列,分兩次付款的客戶會被誤判成未付。只有先用 SUMIFS 彙總才正確。