加班表×工资表工时对账:凭空多算、漏发、数目不符一次揪出

2026-10-09 · 喵窝资源铺

值班核对系列写了四篇(排班冲突 → 值班×请假 → 状态过滤 → 跨月),管的是「班排得对不对」。这篇换条线——钱。工资表里的加班工时和加班费,跟加班记录表对得上吗?财务多算、漏算、小数点错了,靠人眼逐行对 50 个人的表,保准漏。这版脚本把加班记录按人合计,逐人跟工资表对。代码实跑验证,真实输出贴在下面。

输出长什么样

测试数据:加班记录 6 行(张三 4+8 两笔、李四 8、赵六 5、孙八 7.5、钱七 3——钱七名字故意带前后空格),工资表 5 行,考勤汇总 6 行。故意埋了这些陷阱——李四工资表写 10h(实际 8h)、王五工资表算 6h 加班费 300 但加班表压根没这个人、赵六加班了但工资表没算、周九只在工资表有加班费、钱七不在考勤汇总名单。跑完:

对账完成: 7人, 异常 5 人
  ! 周九 工资表算了加班但加班表无记录(凭空多算?)
  ! 李四 工时不符: 差 +2.00h
  ! 王五 工资表算了加班但加班表无记录(凭空多算?)
  ! 赵六 加班表有记录但工资表完全没算(可能漏发或名单不齐)
  ! 钱七 加班表有记录但工资表完全没算(可能漏发或名单不齐);此人不在考勤汇总名单(疑似别名/错别字)

逐项验收:李四那 +2h 正是埋的「工资表多写 2 小时」;王五、周九两笔无中生有的加班费被抓出来;赵六的漏发点到了;钱七名字前后带空格照样合计成功(归一化起效),并且因为考勤汇总里没这个人,额外标了疑似别名。张三两笔加班 4+8=12h 与工资表 12h 对上、孙八 7.5h 对上,对照组零误报。边界:空加班表跑不炸,全员按「工资表有但加班表无」报凭空多算;幂等:连跑两次输出内容 md5 完全一致。

四类问题怎么判

问题判定
凭空多算工资表有加班工时/加班费,加班记录里查无此人
漏发加班表有合计时长,工资表一行加班字段都没有
数目不符两边都有,但工资表工时 ≠ 加班表合计(差值直接打出来)
名单不齐/别名加班的人不在考勤汇总名单里——十有八九是错别字或工号混用

核心思路一句话:先把两边都归一成「姓名 → 数额」,再逐人比对。姓名归一化(去空格/全角空格)必须在读入口就做,否则「张三 」和「张三」就是两个人。容差 0.01h 处理浮点误差,避免 7.5 变 7.499999 这种假异常。

用法

先 pip install openpyxl。加班记录列:姓名 / 日期 / 加班时长;工资表列:姓名 / 加班工时 / 加班费(考勤汇总可选,给了就多一道名单校验)。运行:

python overtime_pay_recon.py 加班记录.xlsx 工资表.xlsx [考勤汇总.xlsx] 对账结果.xlsx

不想自己摆表的格式?免费下载加班对账 xlsx 模板(加班记录 / 工资表 + 一页说明),照着列名填就能跑。想要定制逻辑或对接你的系统格式?找我们定制交付。

输出 xlsx 一张「对账结果」表:姓名/加班表合计h/加班笔数/工资表工时/加班费/差额h/结论,异常行结论直接写人话,拿去跟财务对就是证据清单。

两个真坑(都是这轮实跑踩出来的)

工资对账和排班核对是同一个模式的两面:都是「两边各一份事实,逐人逐日对」。差别只在钱那边的坑更隐蔽——差 0.5 小时没人看得出来,但一年下来就是真金白银。

懒得自己跑?把加班记录和工资表发我(后台留言),AI 跑完人工核对后把异常清单发回给你,9.9 元/次,虚拟物品交付后不退款、结果不符免费重做。更多现成脚本与代做服务 →

相关阅读:跨月值班表核对 · 值班表×请假单跨表核对 · 考勤月度汇总表一键生成 · 进阶:加班费倍率复核(1.5×/2×/3×分档) · 为什么选 Python 做办公自动化

← 喵窝资源铺首页 · 全部文章