有几家供应商对不上(用 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
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。
题目
题目说明
月末结账前先数出「已付 != 已开立」的供应商:付款金额在 C2:C6、开立金额在 B2:B6。把数量填进 Mismatched 单元格 E2。
必须用一条公式逐行比较两列——COUNTIFS 没办法拿一列去比另一列。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | C | E | |
|---|---|---|---|---|
| 1 | Vendor | Invoiced | Paid | Mismatched |
| 2 | Acme | 5000 | 5000 | |
| 3 | Bolt | 3200 | 3000 | |
| 4 | Cobalt | 1800 | 1800 | |
| 5 | Dana | 900 | 950 | |
| 6 | Eli | 400 | 0 |
知识点
SUMPRODUCT(--(B2:B6<>C2:C6)) 逐行比较两列,把每一处不同变成 1,再求和。这正是 COUNTIFS 做不到的事:它的条件只能是常量,说不出「B 列不等于 C 列」。已付 0 也会算成不符,这是刻意的——没人付钱就是最严重的不符。
解题思路
答案写在 E2。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 E2
- 要逐行比较两列,不是整列对整列
- <> 会让不同的行变成 TRUE
- 公式形状:=SUMPRODUCT(--(? <> ?))
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:直接数不同的行
=SUMPRODUCT(--($B$2:$B$6 <> $C$2:$C$6))
Bolt(3200 对 3000)、Dana(900 对 950)、Eli(400 对 0)三行不同,答案是 3。Acme 与 Cobalt 相符,贡献 0。
解法 2:总行数减去匹配的行
=ROWS($B$2:$B$6) - SUMPRODUCT(--($B$2:$B$6 = $C$2:$C$6))
五行减掉匹配的两行,剩下不匹配的三行。结果相同,而且当你同时要报「匹配笔数」时更好核对。
常见问题
怎么在 Excel 里逐行比较两列?
=SUMPRODUCT(--(A2:A10<>B2:B10)) 会数出不同的行数。COUNTIFS 做不到,因为它的条件只能是常量。
付款是空白或 0 算不算不符?
算。它不等于开立金额。月末结账时这通常正是你想抓的:完全没付是最严重的不符。