1
场景背景
财务每月要对账:系统 A 导出一份订单金额,系统 B 导出另一份。两边单号可能对不上、金额可能不一致。目标是生成一张差异表:每笔单的 A 金额、B 金额、差额、状态(一致 / 金额不符 / B 表缺失)。
2
数据结构
共 3 个 Sheet3
解决步骤
1
第 1 步:以 A 表为主键拉出订单号
差异表 A 列直接引用系统A 的订单号,保证不漏单。
=系统A!A2
2
第 2 步:去 B 表找对应金额
用 VLOOKUP 按单号找 B 表金额,找不到时用 IFERROR 返回「无此单」文字。
=IFERROR(VLOOKUP(A2,系统B!A:B,2,FALSE),"无此单")
3
第 3 步:算差额
只有当 B 表有金额时才相减,否则显示 —,避免文本参与减法报错。
=IFERROR(B2-C2,"—")
4
第 4 步:用 IF 标出状态
先判断 B 金额是不是数字(ISNUMBER),不是就是 B 表缺失;是数字再看差额是否为 0。
=IF(ISNUMBER(C2),IF(D2=0,"一致","金额不符"),"B表缺失")
4
完整公式与逐段拆解
=IF(ISNUMBER(C2),IF(D2=0,"一致","金额不符"),"B表缺失")
ISNUMBER(C2)先判断 B 金额是否取到了(数字才算取到)D2=0,"一致"差额为 0 说明两边对得上"金额不符"有金额但差额不为 0"B表缺失"B 表根本没有这笔单号| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 订单号 | A金额 | B金额 | 差额 | 状态 |
| 2 | SO-001 | 225.00 | 225.00 | 0.00 | 一致 |
| 3 | SO-002 | 1,798.00 | 1,898.00 | -100.00 | 金额不符 |
| 4 | SO-003 | 175.00 | 175.00 | 0.00 | 一致 |
| 5 | SO-004 | 795.00 | 无此单 | — | B表缺失 |
| 6 | SO-005 | 675.00 | 无此单 | — | B表缺失 |
| 7 | SO-006 | 0.00 | 240.00 | -240.00 | 金额不符 |
当前表:差异表 · 公式单元格 E2 · 绿色底为公式,蓝色底为动态数组溢出结果
差异表 E 列标出每笔的状态,SO-002 金额不符、SO-006 只有 B 表有
6
数据流向
数据流向演示1 / 4
来源系统A!A2:A6
➜
去向差异表 A 列
A 表单号作为主键
来源系统B!A2:A5
→
去向VLOOKUP
按单号去 B 表找金额
来源VLOOKUP
→
去向状态列
找不到 → 标记缺失
来源B2-C2
→
去向状态列
找到 → 相减判断差额
跟着高亮一步步看数据怎么流动
7
注意事项与坑
!两边单号格式不同(一个有空格一个没有)会导致全部匹配失败,先 TRIM 再对。
!只以 A 表为主键会漏掉「只有 B 表有」的单,严谨做法是两边都做一次反向查找。
!差额用 ABS 取绝对值可以只看差多少,但会丢掉方向信息,看需求选择。
8