已付还是未付?(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 汇总才正确。