首页  ›  经典案例  ›  人事数据

员工花名册多表合并与信息核对

社保表、工资表、考勤表各有一份名单,哪个人在哪张表漏了、身份证号录错了,全靠人眼上下对齐看。
共 4 步,涉及 VSTACK、XLOOKUP、TOCOL、UNIQUE、跨表核对

人事数据基础VSTACKXLOOKUPTOCOLUNIQUE跨表核对

原始困境

社保表、工资表、考勤表各有一份名单,哪个人在哪张表漏了、身份证号录错了,全靠人眼上下对齐看。

数据情况

三张表结构相同(姓名、身份证号、部门、入职日期),行序不同且各有缺失。

解决步骤

1把三张表纵向摞成一张总表
=VSTACK(社保表!A2:D500, 工资表!A2:D500, 考勤表!A2:D500)
VSTACK 垂直堆叠,一次合并三张表。比复制粘贴安全——源表更新后公式结果自动跟着变,也不会重复粘贴。
2去重,得到完整人员名单
=UNIQUE(VSTACK(社保表!A2:A500, 工资表!A2:A500, 考勤表!A2:A500))
只堆姓名列再去重,得到不重复的员工名单。这一步常常能发现只有一张表里才有的人,那通常就是漏报或离职未清理的。
3逐表核对某人是否在册
=IF(COUNTIF(社保表!$A:$A, $A2)>0, "✓", "✗")
三列分别核对社保、工资、考勤。三列全是对勾才正常,出现叉号即可直接定位到具体哪张表漏了。
4以身份证号为准揪出录入错误
=IFERROR(XLOOKUP($A2, 社保表!$A:$A, 社保表!$B:$B, "未找到")=$B2, "对方无此人")
同名同姓时按姓名匹配会出错,所以最终核对必须以身份证号为准。返回 FALSE 说明该员工在另一张表里的身份证号不一致,需要核实更正。

效果

漏报、错录的人从不知道有没有,变成一张表列出来。年度社保基数核对、个税申报前的人员比对,都在五分钟内完成。

易错点

VSTACK 要求各表列数一致、列顺序一致,否则数据会错位。若三张表列顺序不同,先用 CHOOSECOLS 把列调成同一顺序再堆叠。

进阶优化

用 TOCOL(...,1) 把三张表的姓名列堆成一列并自动忽略空白,比 VSTACK 更干净,不会带进空白行。

相关阅读

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