各供应商「已开立减已付款」(两次 SUMIFS)
测试用例
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:B4、付款在 D2:E6,同一供应商可能分几次付款。针对 A2 这家供应商,把未结差异(已开立减已付款)填进 Variance 单元格 F2。
两边都要按供应商汇总——单笔付款记录不等于已付金额。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | D | E | F | |
|---|---|---|---|---|---|
| 1 | Vendor | Invoiced | Vendor | Paid | Variance |
| 2 | Acme | 5000 | Acme | 4800 | |
| 3 | Bolt | 3200 | Acme | 200 | |
| 4 | Cobalt | 1800 | Bolt | 3200 | |
| 5 | Cobalt | 1000 | |||
| 6 | Cobalt | 500 |
知识点
同一个 SUMIFS 模式跑两次、换一张表:先按供应商汇总发票金额,再按供应商汇总付款金额,然后相减。0 是合法答案(已结清),所以不要用 IF(x=0,"") 把它藏起来——那正好会把你找的供应商盖掉。
解题思路
答案写在 F2。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 F2
- 先按 A2 的供应商汇总 B2:B4,再按同一供应商汇总 E2:E6
- 把后者从前者减掉
- 公式形状:=SUMIFS(?, ?, ?) - SUMIFS(?, ?, ?)
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:两个 SUMIFS 相减
=SUMIFS($B$2:$B$4, $A$2:$A$4, A2) - SUMIFS($E$2:$E$6, $D$2:$D$6, A2)
Acme 开立 5000、付款 4800 + 200 = 5000,差异是 0。若只结清一部分,同一公式会直接报出差额,而不是给一个状态词。
解法 2:两边都用 SUMIF
=SUMIF($A$2:$A$4, A2, $B$2:$B$4) - SUMIF($D$2:$D$6, A2, $E$2:$E$6)
SUMIF 两边都是条件区域在前、求和区域在后。结果相同,条件只是单纯相等时读起来更短。
函数指南
常见问题
怎么比较两张表、同一个键的总额?
两张表各自按键汇总再相减:=SUMIFS(发票, 供应商列, 键) - SUMIFS(付款, 供应商列, 键)。用 VLOOKUP 只有在「每张表一家供应商一行」时才成立。
为什么差异显示成短横线或空白,而不是 0?
可能是格式把 0 显示成短横线,或公式包了 IF(x=0,"")。差异为 0 是数据,不是错误。