对账要的是三份结果,不是一份
很多人用 VLOOKUP 做对账,只能得到「匹配上的」,配不上的那些悄悄消失了 – 而配不上的恰恰才是要查的。
| 结果 | 业务含义 |
|---|---|
| 两边都有,金额一致 | 正常,不用管 |
| 两边都有,金额不一致 | 差异明细。要逐条查原因 |
| 只在左表有 | 台账有、系统没有。可能是漏录或已作废 |
| 只在右表有 | 系统有、台账没有。可能是漏登记 |
Joiner 可以一次给出后三份。它的输出方式能拆成三个端口:匹配上的、左表未匹配的、右表未匹配的。这正是对账要的形态 – 不需要跑三遍。
节点串
关键在两处:关联之前必须统一关联键,关联之后要把三个输出都用上。
分步看差异是怎么被分出来的
点上一步下一步。琥珀色是这一步的重点。
台账和系统明细
左表四条,右表四条。肉眼已经能看出有问题,FA-002 的编号后面多了一个空格,FA-003 两边金额不同,FA-005 只在一边有。
| 台账(左表) | 系统明细(右表) | ||
|---|---|---|---|
| 资产编号 | 台账金额 | 资产编号 | 系统金额 |
| FA-001 | 86000 | FA-001 | 86000 |
| FA-002 | 4200 | FA-002 | 4200 |
| FA-003 | 63000 | FA-003 | 61000 |
| FA-004 | 7800 | FA-005 | 12000 |
先把编号里的空格去掉
两张表各接一个 String Manipulation,对关联列做 strip()。这一步不做,FA-002 会被判成两边都独有 – 凭空多出两条假差异,还漏掉一条真匹配。人工填报的数据里这种情况极常见。
| 处理前 | 处理后 | 不做会怎样 |
|---|---|---|
| 「FA-002 」 | 「FA-002」 | 被当成和「FA-002」不同的两个编号 |
匹配上的走一个口,两边独有的各走一个口
关联列选资产编号,输出方式选拆成多个表。三个端口的内容一目了然 – 不需要自己再筛。
| 输出端口 | 内容 | 条数 |
|---|---|---|
| 匹配上的 | FA-001、FA-002、FA-003 | 3 |
| 左表独有 | FA-004(台账有,系统没有) | 1 |
| 右表独有 | FA-005(系统有,台账没有) | 1 |
匹配上的这一支再比金额
Math Formula 算 $台账金额$ - $系统金额$,再用 Row Filter 筛出不等于零的。FA-003 差 2000 – 这就是要去查原因的那一条。
| 资产编号 | 台账金额 | 系统金额 | 差额 |
|---|---|---|---|
| FA-001 | 86000 | 86000 | 0 |
| FA-002 | 4200 | 4200 | 0 |
| FA-003 | 63000 | 61000 | 2000 |
这才是一次完整的对账结果
三份分别写进同一个 Excel 的不同工作表,交给业务逐条核。总条数要对得上 – 左表 4 条等于匹配 3 条加左表独有 1 条,右表同理。
| 清单 | 内容 | 条数 |
|---|---|---|
| 金额不一致 | FA-003,差 2000 | 1 |
| 台账有系统无 | FA-004 | 1 |
| 系统有台账无 | FA-005 | 1 |
四个容易出事的地方
- 关联列类型不一致,一条都配不上。左表编号是文本、右表是数字,全部匹配失败,输出空表还不报错。对账时这个后果特别严重 – 你会以为两边完全对不上。关联前看两边列名旁的类型图标。
- 关联列有重复,行数暴涨。右表同一个编号有两条记录,左表每行会变成两行,差异清单跟着翻倍。关联前先确认关联键在两边是否唯一,不唯一就要么补上第二个关联列,要么先去重。
- 只用了匹配那一个输出。这是最常见的错。配不上的行被静默丢弃,而它们恰恰是对账要找的东西。养成对条数的习惯:三个输出的条数加起来必须和源表对得上。
- 金额有小数,差额是 0.0000001。浮点数比较不能直接判等于零。用绝对值小于某个容差来筛,比如小于 0.01 算一致。
换成你的场景要改哪里
| 要改的地方 | 怎么改 |
|---|---|
| 关联键 | 换成你的业务主键。一列不足以唯一标识就选多列 |
| 要比的字段 | 不止金额的话,每个字段各算一次差,或者用 Column Expressions 一次算完 |
| 容差 | 金额比对建议设容差,别直接判等 |
| 输出形态 | 三份写进同一个工作簿的不同工作表,交付时最方便 |

