一、适用场景
人事每月导出工资社保汇总表,表格横向铺满工资、养老、失业、个税、实发工资等多列,需要快速转换成统一标准格式,匹配系统编码、自动填充公司、期间等固定字段,不用手动复制粘贴,Power Query 一键完成。
二、操作分步
第一步:快捷键快速创建超级表
选中你的工资数据源全部单元格
按下快捷键 Ctrl + T
弹出「创建表」弹窗:
1)单元格范围会自动识别,无需手动修改
2)一定要勾选【表包含标题】,点击确定

作用:把普通区域转为超级表,后续刷新数据不会丢失格式
第二步:打开高级编辑器粘贴转换脚本
顶部菜单栏找到【主页】
点击【高级编辑器】,清空原有代码
复制下方完整脚本粘贴进去,点击完成,关闭并上载
脚本中涉及的表名称,查询方式,表设计--表名称
let
源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
移除总计行 = Table.SelectRows(源, each [行标签] <> "总计"),
逆透视 = Table.UnpivotOtherColumns(移除总计行, {"行标签"}, "元素组", "金额"),
映射表 = #table(
type table[元素组=text, 分组元素ID=text],
{
{"工资", "HLS01"},
{"个人养老", "HLS10"},
{"个人失业", "HLS12"},
{"公司养老", "HLS14"},
{"公司失业", "HLS15"},
{"公司生育", "HLS17"},
{"个税", "HLS07"},
{"实发工资", "HLS20"},
{"实发工资和个税", "HLS25"},
{"实发工资+个税", "HLS25"},
{"服务费", "HLS19"},
{"个人公积金", "HLS09"},
{"个人医疗", "HLS11"},
{"公司医疗", "HLS13"},
{"公司工伤", "HLS16"},
{"公司公积金", "HLS18"}
}
),
匹配编码 = Table.NestedJoin(逆透视, {"元素组"}, 映射表, {"元素组"}, "映射结果", JoinKind.LeftOuter),
展开编码 = Table.ExpandTableColumn(匹配编码, "映射结果", {"分组元素ID"}, {"分组元素ID"}),
添加公司 = Table.AddColumn(展开编码, "公司", each "142"),
添加期间ID = Table.AddColumn(添加公司, "期间ID", each "202607"),
添加运行类型 = Table.AddColumn(添加期间ID, "运行类型名称", each "HLS_RT_NOR"),
添加缴纳公司 = Table.AddColumn(添加运行类型, "社保公积金缴纳公司", each "142"),
添加代理公司 = Table.AddColumn(添加缴纳公司, "社保公积金代理公司", each ""),
重命名成本中心 = Table.RenameColumns(添加代理公司, {{"行标签", "成本中心ID"}}),
最终列顺序 = Table.ReorderColumns(重命名成本中心, {
"公司", "期间ID", "运行类型名称", "成本中心ID", "分组元素ID",
"社保公积金缴纳公司", "社保公积金代理公司", "金额", "元素组"
})
in
最终列顺序
复制脚本操作截图

表名称查询方式截图

三、脚本自动实现的功能
表格转一维明细:横向多列工资社保项目,自动转为一行一项标准明细格式
自动匹配系统编码:内置工资、社保、个税对应编码表,自动绑定分组元素ID
批量填充固定字段:一次性生成公司、期间、缴纳单位、运行类型等固定信息
规范表头与列顺序:自动把「行标签」改名成本中心 ID,按系统要求排序所有字段
四、按需修改小技巧修改表格名称
脚本第一行 [Name="表3"],如果你的超级表名字不是表 3,改成对应表名即可
修改公司 / 单位编号
"142"两处代表缴纳公司编码,替换成你们企业编号
修改核算月份
"202607"是期间 ID,每月更新对应年月即可
新增项目编码
在映射表大括号里新增一行 {"项目名称","对应编码"},即可自动匹配
五、使用优势
不用 VBA,Office/WPS 新版自带 Power Query,免费无插件
每月更新工资表,只需刷新数据,不用重复写代码
输出字段完全匹配财务系统导入模板,直接复制上传
自动去重、清理总计行,减少人工核对错误
六、小贴士
如果运行后部分项目编码为空,检查表格里项目文字是否和映射表里名称完全一致(空格、符号差异会匹配失败),微调文字即可完美适配。
夜雨聆风