首页  ›  经典案例  ›  对账

银行流水与账面日记账自动核对

每月末把银行流水和自己账上的日记账逐笔勾对,几百上千行靠肉眼找,一坐就是一下午,还容易漏。
共 4 步,涉及 FILTER、XLOOKUP、COUNTIF、TEXT、账实核对

对账进阶FILTERXLOOKUPCOUNTIFTEXT账实核对

原始困境

每月末把银行流水和自己账上的日记账逐笔勾对,几百上千行靠肉眼找,一坐就是一下午,还容易漏。

数据情况

A:E 为银行流水(日期、摘要、收入、支出、余额),G:K 为账面记录(日期、摘要、借方、贷方),两表行数与顺序都不一致。

解决步骤

1统一两表的匹配键
=A2&"|"&TEXT(B2,"yyyymmdd")&"|"&C2
用「摘要+日期+金额」拼成唯一键。同一天可能有多笔相同金额,所以三个字段一起拼,避免误配。这一步是整张对账表的地基。
2标记每笔在对方表是否找得到
=IF(COUNTIF(银行表!$F:$F, $G2&"|"&TEXT($H2,"yyyymmdd")&"|"&$J2)>0, "已对上", "未对上")
COUNTIF 找得到说明银行有这笔,返回「已对上」。比 VLOOKUP 更轻量——这里只需要知道有没有,不需要取值。
3把单边记录全部筛出来
=FILTER(H2:K500, COUNTIF(银行表!$F:$F, H2:H500&"|"&TEXT(I2:I500,"yyyymmdd")&"|"&K2:K500)=0, "全部对上,无差异")
一次筛出「账上有、银行没有」的全部记录,这些就是要查银行回单在途的项。把两表位置对调,反向即可查「银行有、账上没有」。
4把对上的金额拉过来做二次校验
=IFERROR(XLOOKUP($G2&"|"&TEXT($H2,"yyyymmdd"), 银行表!$F:$F, 银行表!$D:$D, "未找到"), "")
取银行侧金额,再另起一列算「账面金额减银行金额」。差额为 0 才算真对上,这一步能抓出摘要相同但金额差几分的隐蔽差错。

效果

整张表刷新一次只需 1 秒。以前一下午的活,变成打开文件、看差异列有几个非空、只查那几笔的十分钟工作。

易错点

不要用 Ctrl+F 逐笔搜或按金额排序后肉眼比对,几笔金额相同时极易串行。另外金额务必转成统一文本再拼键,否则 100 与 100.00 会被当成不同值。

进阶优化

把银行表做成超级表(Ctrl+T),新导入的流水会自动并入公式范围,公式无需修改。再配条件格式把差异行标红,一眼可见。

相关阅读

← 返回财税实务通首页,查看更多函数与政策