有几家供应商对不上(用 SUMPRODUCT 比较两列)

困难 数学
题目说明
提示 0/4
官方解法 2
–
测试用例
1
2
3
重置
提交
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
正在加载交互式电子表格...
正在准备单元格数据与公式求解引擎
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。

题目

题目说明

月末结账前先数出「已付 != 已开立」的供应商:付款金额在 C2:C6、开立金额在 B2:B6。把数量填进 Mismatched 单元格 E2。

必须用一条公式逐行比较两列——COUNTIFS 没办法拿一列去比另一列。

题目数据

用表格查看整份数据(可选中、可复制)
这道题的数据表
ABCE
1VendorInvoicedPaidMismatched
2Acme50005000
3Bolt32003000
4Cobalt18001800
5Dana900950
6Eli4000

知识点

SUMPRODUCT(--(B2:B6<>C2:C6)) 逐行比较两列,把每一处不同变成 1,再求和。这正是 COUNTIFS 做不到的事:它的条件只能是常量,说不出「B 列不等于 C 列」。已付 0 也会算成不符,这是刻意的——没人付钱就是最严重的不符。

解题思路

答案写在 E2。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。

  1. 目标单元格是 E2
  2. 要逐行比较两列,不是整列对整列
  3. <> 会让不同的行变成 TRUE
  4. 公式形状:=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 练习

常见问题

怎么在 Excel 里逐行比较两列?

=SUMPRODUCT(--(A2:A10<>B2:B10)) 会数出不同的行数。COUNTIFS 做不到,因为它的条件只能是常量。

付款是空白或 0 算不算不符?

算。它不等于开立金额。月末结账时这通常正是你想抓的:完全没付是最严重的不符。