夜雨聆风学习资料网

ARTICLE · 1052014

每周花 3 小时汇总 Excel,AI 写的脚本 30 秒干完

每周花 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 秒留个备份,省的是后面几天的返工。

相关学习资料