ARTICLE · 1052014
每周花 3 小时汇总 Excel,AI 写的脚本 30 秒干完
「AI 帮我写」第 2 期
摘要:13 张部门周报表合成 1 张,以前要 3 小时,现在 30 秒。代码逐行注释,照抄就能跑,文末附 3 个高频报错的解法。
每周一早上,都有一件事在等着你:把十几个部门发来的表格合成一张总表。
复制粘贴,对齐列,补公式,遇到有人改了列标题还得回头看半天。3 个小时就这么没了。
这期就解决它。13 张表合成 1 张,加一列标明数据来自哪个部门,顺手去重、按销售额排序。整套动作,30 秒。

图 1:从一堆散表到一张总表
先看效果,再看代码
我手上是这样一批文件:
8月周报/
├── 销售一部.xlsx
├── 销售二部.xlsx
├── 市场部.xlsx
├── 客服部.xlsx
└── ...共 13 个
每张表的列都是:姓名、销售额、订单数。
跑完脚本,输出一个 8月汇总.xlsx,多了一列“来源表”,重复的人只留一条,销售额从高到低排好。

图 2:13 张表合并成 1 张
这是 AI 帮我写的脚本
整整 30 行,每一行我都标了它在干嘛:
# 引入 pandas,专门处理表格的库
import pandas as pd
# 引入 pathlib,用来遍历文件夹
from pathlib import Path
# 1. 源文件夹,13 张部门表都放在这里
src = Path(r"D:\周报\8月")
# 2. 汇总结果输出到这个文件
out = Path(r"D:\周报\8月汇总.xlsx")
# 3. 找出文件夹里所有 xlsx,跳过 Excel 打开时生成的 ~$ 临时文件
files = [f for f in src.glob("*.xlsx") if not f.name.startswith("~$")]
frames = []
for f in files:
#4. 读一张表
df= pd.read_excel(f)
#5. 新增一列,值取文件名,一眼就知道数据来自哪个部门
df["来源表"]= f.stem
frames.append(df)
# 6. 所有表纵向拼成一张总表
all_df = pd.concat(frames, ignore_index=True)
# 7. 按姓名去重,同一个人只留第一条
all_df = all_df.drop_duplicates(subset=["姓名"], keep="first")
# 8. 按销售额从高到低排序
if "销售额" in all_df.columns:
all_df= all_df.sort_values("销售额", ascending=False)
# 9. 写出到新文件,源表一个字都不动
all_df.to_excel(out, index=False)
print("搞定,共", len(all_df), "行,输出:", out)

图 3:汇总结果多一列来源表并自动排序
怎么让它跑起来,3 步
第 1 步,装 Python。去 python.org 下载安装包,安装界面底部有一个 Add Python to PATH 的勾选框,务必勾上,这一步漏了后面全报错。
第 2 步,装两个库。按 Win 键 + R,输入 cmd 回车,粘贴这一行:
python -m pip install pandas openpyxl
第 3 步,把上面那段代码存成 汇总.py(用记事本存,编码选 UTF-8),在这个文件所在目录打开命令行,运行:
python 汇总.py
看到“搞定,共 187 行”就是跑通了。第一次装环境大概花 10 分钟,之后每周省下 3 小时。

图 4:脚本跑通的那一刻
表不一样怎么办,用追问解决
真实工作里的表永远不标准,别改代码,直接把问题丢回给 AI:
1. “表头不在第 1 行,在第 3 行,帮我改脚本”
2. “数据在每张表的第 2 个 sheet 里,不是第一个”
3. “13 张表的列名不完全一样,有的叫销售额有的叫业绩,合并时按对应关系映射”
第 3 条是最常见的情况,也是 AI 最擅长的部分,你只要把列名差异如实说清楚。
3 个高频报错,先收藏
1. FileNotFoundError:路径写错了。Windows 路径里的反斜杠在代码前加个 r 就不用管转义,路径尽量从文件夹地址栏直接复制
2. KeyError 姓名:某张表里没有“姓名”这一列,或者列名前后带了空格。让 AI 加一句自动去掉列名空格的处理
3. 汇总行数比预想多:有人重复上报。去重是按姓名保留第一条,如果要按销售额保留最大的那条,让 AI 把 keep=first 改成保留最大值
安全红线,和上期一样
1. 脚本只写新文件,绝不覆盖源表,代码里那行 to_excel 输出的是另外一个文件名
2. 第一次跑之前,把 13 张源表复制一份到测试文件夹
3. 输出文件先肉眼扫一遍行数和总数,和数据源对得上再拿去交差
我是做 IT 的,数据被人覆盖过、公式被拖坏过、文件被同名替换过,这些事都真实发生过。多花 10 秒留个备份,省的是后面几天的返工。