先把两份数据放进同一张表的两列
不管最后是同一张表还是两个文件,比对的第一步都是摆在一起看:A 列放甲表的关键字(工号、手机号、订单号都行),C 列放乙表的。中间留一列空着,等下打标记。
这里强调一句:一定要用唯一且稳定的东西当关键字。用「姓名」比对,重名的直接翻车;用「订单号」或「手机号」几乎不会错。
方法一的场景:只想看看有没有重复的
选中两列数据,「开始」→「条件格式」→「突出显示单元格规则」→「重复值」,选个显眼的颜色。
它的优点是零公式,几秒出结果;缺点是只告诉你「有重复」,不告诉你「对方那边没有谁」,而且两个名单里各自本身就重复的话会混乱。所以只适合快速检查,不适合出结论。
方法二:COUNTIF 打标记,这才是能用的
在 B2(紧贴甲表右边那列)输入:
=COUNTIF($C:$C, A2)
意思是 A2 这个值在乙表那一列里出现了几次。双击右下角填充柄往下复制。结果是 0 的就是乙表里没有的人,1 或更大的就是两边都有。
反过来,在 D2 输入 =COUNTIF($A:$A, C2),下拉,筛出的 0 就是甲表里没有、乙表独有的人员。
然后整表按 B 列筛选 0,把 A 列这些复制出去,就是「需要对方补充」的名单;D 列筛 0 同理。
数据量大的时候记得把 $C:$C 换成实际区域比如 $C$2:$C$5000,整列引用在十万行规模会卡。
要点对金额这类字段:加一层判断
光大方向一致还不够,同一笔订单金额对不上更麻烦。这时用 SUMIFS 从另一张表把金额取回来比:
=SUMIFS(乙表!金额列, 乙表!编号列, A2)
取回来再和本表金额相减,非零的就是异常行。银行流水和内部台账核对基本都靠这一招。
收尾的几个提醒
比对之前先检查两列格式是不是都是文本或者都是数值,一边文本一边数字的时候,COUNTIF 会认为「00123」和「123」不是一回事,全部掉 0,很容易被误导。
不确定就两边都用 TRIM 和 VALUE 清洗一遍:先在旁边用 =TRIM(A2) 出一份新列,拿新列去比。
核对完别急着删原数据那两列,另存一份留着,万一被人质疑直接摊开给对方看。
