一句话结论
50 份同结构表合成一张总表,用 Power Query 或 Python 批量拼接,再按行数和金额双校验确认无漏无重,半小时内能完成。
这篇解决什么问题
月底收上来的费用明细、报销台账、门店日报,来自十几个部门,表头看着一样,实际要一张张打开复制粘贴。粘到第 20 份的时候,人就开始怀疑自己是不是漏了哪个部门。
这类活的难点从来不在合并本身,在于合完之后你敢不敢签字。适用:列结构一致、文件名或部门标识能对上的批量表格。不适用:表头有合并单元格,或者一个文件里散着好几个不同结构的 sheet。
开始前要准备什么
- Excel 2016 以上自带 Power Query,WPS 部分版本没有
- Python 可选,装 pandas 就够;不想折腾环境就全程用 Excel
- Kimi 用来读表头、写脚本、捋校验思路,免费版日常够用
- 50 份源表放同一个文件夹,文件名里带部门或月份
- 第一次做预留 40 分钟到 1 小时,熟练后 10 分钟内
具体怎么做
第 1 步 · 先给表头做一次体检
看起来一样的表头,实际常有空格、换行、全角半角差异,还有「金额(元)」和「金额(元)」混着用。我吃过这个亏,48 份合完了才发现两份的列名带空格,总表凭空多出两列空值。
我把 50 份结构相同的 Excel 表放在同一个文件夹里,准备合并成一张总表。请帮我设计一份表头体检清单,要能查出这些问题:列名前后有空格或换行、同一列在不同文件里叫法不一致、表头不在第一行、存在合并单元格、有的文件多出隐藏列。清单按「检查项 / 检查方法 / 发现后怎么处理」三列输出,方法写 Excel 公式或 Power Query 步骤都可以。示例:某公司「费用明细_华东.xlsx」表头在第 2 行,列名「金额(元)」与「金额(元)」并存。
预期产出:一份体检清单,十分钟内能把 50 份表扫一遍,标出需要返工的那几份。
第 2 步 · 决定走哪条路合并
判断依据其实很简单:这批表以后每个月都要合一次,就用 Power Query,因为操作会被记成查询,下个月刷新就行。一次性任务、或者合并时顺带要做清洗,Python 更省事。我发现财务同事大多偏向 Power Query,理由是每一步都能在界面上看见,不像代码那样一跑黑箱。
我要把同一文件夹下的 50 个 xlsx 合并成一张表,每份都是 Sheet1,第一行是表头,列结构一致:日期、部门、事由、金额、经办人。请给我两套方案并说明各自适用场景:方案 A,用 Excel Power Query 的完整操作步骤,从「数据 – 获取数据 – 从文件夹」开始,每一步点哪里、填什么;方案 B,一段 Python 代码,用 pandas 读取该文件夹下全部 xlsx 纵向合并,并新增一列「来源文件」记录文件名。代码里的路径写成 C:/work/费用明细,不要用我的真实路径。
预期产出:一份能照着点的操作步骤,或者一段改个路径就能跑的脚本。
第 3 步 · 合并时必须留一列来源
合并不难,难的是出了问题能倒查。总表里只留数据不留出处,一旦某个部门金额对不上,你只能从头再翻 50 份表。加一列来源文件名,成本几秒钟,省的是后面一整天。
在上面合并结果里补一段处理逻辑:新增一列「来源文件」,值为该行来自的 xlsx 文件名(不含扩展名);再从文件名里拆出「部门」和「月份」两列,文件名格式统一是 费用明细_部门_2024xx。如果某个文件名不符合这个格式,不要静默跳过,把它单独列到一张异常清单里让我人工确认。请分别给出 Power Query 的步骤说明和对应的 pandas 代码。
预期产出:带来源列、部门列、月份列的总表,外加一张文件命名异常清单。
第 4 步 · 行数校验要分来源对
这是整条流程的命门。光说「合完了」没用,要能说清楚 50 份加起来本来是多少行、总表现在是多少行、每一份各自进来多少行。
我需要做行数校验。请写一段 Python 代码:遍历 C:/work/费用明细 下所有 xlsx,读取每个文件 Sheet1 去掉表头后的有效行数,输出一张对照表,列包括文件名、源表行数、合并总表中该来源的行数、差异。差异不为 0 的行标出来。另外统计合并总表的总行数,与各源表行数之和做对比,把结论写成一句能直接放进工作底稿的话。
预期产出:一张行数对照表,差异列全部为 0,加一句可引用的校验结论。
第 5 步 · 金额再对一遍账
行数对得上不代表数对得上,中间可能混着文本型数字、隐藏行、空白单元格。我一般会再走一次金额合计:源表逐份求和,总表按来源分组求和,两边必须咬合。
接着做金额校验。请写代码:对每个源表文件的「金额」列求和,注意列里可能有文本型数字和空值,先统一转成数值型,并告诉我一共转换了多少个异常值;再对合并总表按「来源文件」分组求和,生成对照表,列包括文件名、源表金额合计、总表该来源金额合计、差额。差额超过 0.01 的行单独列出来。最后把所有源表金额总和与总表金额总和写成一行,给出「通过 / 不通过」的判断。
预期产出:金额对照表,加一个明确的通过或不通过判断。
第 6 步 · 让 AI 写成交得出去的结论
财务和行政最终交上去的东西,往往不是表格本身,而是一段能让领导三十秒看懂的说明。这段文字别自己憋,把校验结果喂给 AI 让它起草。
根据上面的行数对照表和金额对照表,帮我写一段 200 字以内的校验结论,放在工作底稿开头。格式:先写合并范围(多少份文件、多少个部门、覆盖哪几个月),再写行数校验结果和金额校验结果,最后写发现的异常及处理方式。语气平实,不要用「完美」「完全无误」这类词;如果存在差异,如实写出差异金额和涉及的文件名。
预期产出:一段可以直接贴进底稿、不用二次改写的校验结论。
实测记录
| 项目 | 情况 |
|---|---|
| 范围 | 50 份 xlsx,12 个部门,3 个月 |
| 首次耗时 | 约 50 分钟,表头体检占了一半 |
| 熟练之后 | 约 10 分钟,大部分时间在等校验跑完 |
| 与手工对比 | 逐张复制粘贴要搭进去一个下午,还漏过 2 份 |
| 返工情况 | 第一次漏了 3 份,文件名多了个空格,Power Query 不报错 |
最容易错的 3 个地方
- 只看列名不看列序。纠正:合并后抽查 3 行,逐字段对回源表。
- 总行数对上就收工,其实内部可能重复。纠正:按来源分组比行数,再比金额。
- 合完存成 xlsx 就关掉,下月重来。纠正:保存 Power Query 查询,刷新即可。
可复用的东西
全文的提示词归拢起来就四类:表头体检清单、合并方案二选一、行数与金额双校验代码、结论段。换个场景——50 份考勤表、50 份合同台账——只需要换列名和文件夹路径,骨架不用动。
我自己把第 4 步和第 5 步合并存成了一个固定脚本,改一行路径就能复用。行数和金额这两个校验,永远一起跑,别只跑一个。
合并是体力活,校验才是专业活。来源列和两处对账做扎实了,50 份表和 5 份表对你来说没有区别。
你手上那批表,最磨人的是表头不统一,还是文件名一片混乱?
常见问题解答
50 份表里有两份表头不一样,还能一次性合并吗?
不能硬合。先把不一致的两份单独拎出来,确认是多列还是列名不同,改齐后放回文件夹重跑,否则总表会多出整列空白。
没有 Python 基础,只用 Excel 做得到吗?
可以。从文件夹导入、合并、加来源列在 Power Query 界面里点就行,不写代码;只有校验那一步需要配数据透视表或公式做比对。
合完发现行数差了 200 多行,从哪儿查起?
先看按来源文件分组的行数表,差异集中在哪个文件就从哪查。多数情况是文件名格式不统一被筛掉了,或者源表里有隐藏行没读进来。
本网站的部分内容可能来源于网络或用户投稿,仅供大家学习与参考,如有侵权,请联系客服: hhxmw778 进行删除处理。
本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
教程如引导您添加微信或有另外收费服务,请自行甄别!
如遇充值环节或绑定支付账户或输入支付密码之类的异常步骤,建议停止操作!本站不对操作项目的损失负责!
本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现任何资源有问题请向站长举报下架
(手机微信用户建议用默认浏览器打开,可体验完整功能)
