上季度末,财务把我叫过去,说她手里的付款记录和我对不上,差了七笔。我当时挺有把握,回她一句不可能,我每一笔都是从平台导出来的。结果坐下来一对,真差了七笔,而且是我这边的表有问题。
那天下午我俩对着两张表看了一小时,发现问题特别蠢:我导出来的订单号,在表格软件里变成了一串看不懂的东西,尾巴几位全是 0。财务那张表里的订单号是她从报销单上抄的,是完整的。两边的钥匙不一样长,锁当然对不上。
两张表到底靠什么对上
先说清楚为什么需要对账这件事。财务那边记的是钱,银行流水、报销单、付款记录,一笔记一笔。我这边记的是货,哪天买了什么、哪家店、多少钱、开没开票。两套记录的出发点不一样,字段也不一样。
能让它们对上的只有一个东西:订单号。订单号是平台给每一笔交易编的唯一编号,只要两边都有它,就能把它当成钥匙,把两张表拼起来。
人的名字不行,会重名。金额不行,同样的钱一天能出现好几笔。日期也不行,同一天下单的太多了。只有订单号是唯一的那一个。
订单号必须先统一成同一种形态
这是我最想说的一条,因为我就是栽在这上面的。
订单号是一长串数字,表格软件有个坏习惯,它看到一长串纯数字就自作主张当成数值处理。数值有精度上限,超过十几位之后,后面的位数会被丢掉,丢掉的部分全补 0。表面上看着还是一串数字,实际上已经不是原来那个号了。
所以对账之前第一件事,是确认两边的订单号长得一模一样。拿眼睛看前几位没用,得看尾巴。我的办法是随便挑一笔,两边都拉出来,一字一字比完。
万一已经变形了,也别慌。变形的是文件打开方式,不是数据本身。重新用"导入"的方式打开,在导入的第二步把那一列指定成文本,订单号就还是完整的。别直接双击文件,那是给软件自己发挥的机会。
匹配的具体做法
订单号统一之后,剩下的动作很机械。
在我的订单表旁边加一列,用 VLOOKUP 去财务那张表里找同一笔订单号,找到了就把她那边记录的金额、状态带过来,找不到就报错。报错的那些行,就是要重点看的那几笔。
写的时候有个细节要留意。查找范围要写绝对引用,不然公式往下拖的时候,查找范围会跟着往下跑,第二行开始就全错了。我第一次做的时候没注意,拖到第十行结果全变错值,还以为公式有问题。
还有一个参数必须写死。第四个参数要填 0,意思是精确匹配。不填或者填 1,它会给你找一个"差不多"的,订单号这种东西差不多就是全错,而且错得悄无声息。
匹配不上的几种情况,各有各的原因
跑完之后总有几行报错,我碰到的基本是这三类。
第一类是我这边有、她那边没有。多数是还没走报销,或者这笔我垫了钱还没提交。这种不用慌,属于正常的时间差。
第二类是她那边有、我这边没有。这就得查了,可能是她记的是别的平台的单子,也可能是我这边的导出时间范围没盖住。我碰到过一次是导出的起始日期填错了,少算了三天。
第三类是两边都有、金额不一样。这种最麻烦,通常是退款或者优惠造成的。我遇到过一笔,她那边记的是实付,我这边订单表里的金额是商品原价,差了十几块的优惠。这种核清楚了就行,不是谁记错了。
我踩过的几个坑
订单号变形那个已经说过了,是最大的一个。
第二个坑是我一开始把整张表都拿去匹配,几百行一起跑,表格卡了半分钟。后来我先把范围筛小,只留当月、只留状态正常的,跑起来快很多,也更容易看出哪行有问题。
第三个坑比较隐蔽。匹配完我把结果直接粘给了财务,忘了说这是公式生成的。她那边复制粘贴的时候把公式带过去了,再打开就全乱了。现在我会先把匹配结果复制成纯数值,再发出去。
对完之后我留了什么
每次对完账,我会留一份当月的对账记录。不用做得多正式,就是一张表,写清楚对的是哪个月、一共多少笔、匹配上多少、有差异的是哪几笔、每笔差异什么原因。
留这个的好处是下次被问起来,我能直接翻出来。我们财务换过一次人,新来那位把前一年的账翻出来问,我手上要是有记录,十分钟答完;没有的话,得重新导一次重新对一遍。
我后来把这一步也换了个做法
前面说的这些,前提是我手上得先有一张完整的订单表。以前这张表是我一页页翻订单页抄出来的,抄一天还容易漏,抄出来的订单号还经常手抖少一位。现在我不抄了,用多多开票助手导出。它是个装在浏览器上的扩展,按时间范围把订单读成一张表,36 个字段,店铺、金额、签收时间、发票状态、下载状态都在里面,订单号那列还做了防变形处理,不用我再手动指定格式。
它省掉的是最前面那一段抄录的功夫,不是对账本身。对账这件事它帮不上我,两边口径不一样的时候,该人看的还得人看。它也不知道我财务那张表长什么样,更不会替我判断某笔差异是退款还是优惠。我能指望它的,就是给我一份干净、完整、格式不会自己变坏的原始数据。
安装和第一次提交我写过一篇图文教程,照着做一遍就能上手。导出来的表我再拿去做匹配,前后加起来不到二十分钟,比当初那一下午强多了。
常见问题
两边订单号都对,为什么还是匹配不上?
先看有没有多余的空格。从系统里复制出来的数据经常带不可见字符,看着一样,实际不一样。用去除空格的函数清洗一遍再匹配,多数能解决。
一定要用 VLOOKUP 吗,别的函数行不行?
行。能按条件查找的函数不止一个,用你最熟的那个就好。函数本身不重要,重要的是订单号这把钥匙得先统一好,钥匙错了换什么函数都白搭。
导出来的订单表字段太多,都要用吗?
不用。我平时对账只留订单号、店铺、金额、下单时间、发票状态这几列,其余先隐藏。列少了看的时候不容易串行,公式也好写。
一个月的单子不多,有必要这么折腾吗?
十来笔的话,人眼扫一遍更快。我是因为一个月上百笔、分散在二十多家店,才先用多多开票助手导出一张表,再拿去做匹配。量小的时候别上工具,凭眼睛看反而不容易出错。