Excel按照某一列分类输出各个表格:不会VBA、不装Python,三步拆完
你的需求,大概率是这样
手上有一张总表,某一列的值是"分类标签":
| 工号 | 姓名 | 所属部门 | 本月业绩 | 备注 |
|---|---|---|---|---|
| 1001 | 张三 | 销售一部 | 128,000 | |
| 1002 | 李四 | 销售二部 | 96,500 | |
| 1003 | 王五 | 销售一部 | 143,200 | |
| … |
你想按「所属部门」这一列,把它拆成 销售一部.xlsx、销售二部.xlsx、市场部.xlsx……
这就是「按某一列分类输出各个表格」。
听起来简单,但大多数人搜索完之后会卡在同一个地方 —— 拆出来了,格式没了。
下面把三条主流路线讲清楚,包括它们各自会在哪里翻车。
路线一:Power Query(Excel 自带,零代码)
路径:数据 → 获取和转换 → 筛选某一列的值 → 导出为新文件
优点:
- Excel 自带,零成本
- 不用写任何代码
缺点(这几条都是硬伤):
- 有多少个分类,就要重复操作多少遍。8 个部门 = 操作 8 次,每次都要筛选→导出→改名
- 只处理"数据",不处理"格式" —— 多层表头、合并单元格、条件格式、列宽、字体颜色全部丢失
- 拆完通常要重新排版一遍,分组多的时候比手动做还慢
适用:一次性任务、单行普通表头、拆完不需要给人看格式。
路线二:Python 脚本(openpyxl / pandas)
百度/CSDN 上能搜到大量代码。最小示例长这样:
import pandas as pd
df = pd.read_excel("总表.xlsx")
for dept, sub in df.groupby("所属部门"):
sub.to_excel(f"输出/{dept}.xlsx", index=False)
看起来很美,实际用起来是这样:
| 问题 | 说明 |
|---|---|
| 格式全丢 | pandas 走的是「读值 → 写值」路线,样式信息根本不在它的处理范围里 |
| 要保留格式? | 得改走 openpyxl 逐单元格复制,代码量翻好几倍(表头、合并区域、列宽、行高、数字格式……) |
| 列名一变就得改代码 | 这个月叫"所属部门",下个月叫"部门",脚本直接报错 |
| 表头不在第一行 | 还得先告诉它表头在第几行,猜错了数据全错 |
| 双层拆分 | 先按部门、再按人,得自己写两层循环 |
| 装环境 | 得装 Python、装 openpyxl/pandas,对非技术岗是实打实的门槛 |
适用:有编程基础、需求长期稳定、或需要接进自动化流程的场景。
顺带说一句:为什么走 pandas / Power Query 格式必然丢?
xlsx 的格式信息(字体、填充、边框、合并区域、列宽、条件格式)存在文件内部的样式表里,
不是单元格值的一部分。只要走「读数据再写数据」的路线,样式就带不过来。
要保留,只能逐单元格复制样式 —— 这就是路线二的代价所在。

路线三:VBA 宏
VBA 能做,也能保住格式,但它的问题是门槛和工作量都摊在你身上:
- 你得会写或者会改 VBA,不然报错只能干瞪眼
- 网上抄来的代码,换个表(列名不同、表头行数不同)就跑不起来
- 很多单位的 Excel 默认禁用宏,或者需要走审批才能开
- 参数写死在代码里,每次改动都要进编辑器
适用:本身就在用 VBA 做自动化的老手。
路线四(我在用的):三步点击的本地工具
先说这类工具的核心能力应该是什么:保留格式 + 批量处理 + 零代码。
我用的是 ExcelRouter,免费开源,Windows 免安装(不用装 Python)。
操作就三步
| 步骤 | 做什么 |
|---|---|
| ① | 点「📄 选一个 Excel 文件」,选你的总表 |
| ② | 「拆分字段」下拉里选 所属部门 —— 列名是工具自动识别出来的,不用你输入 |
| ③ | 点「▶ 开始拆分」 |
输出文件夹里就是:
拆分结果/
├── 销售一部.xlsx
├── 销售二部.xlsx
├── 市场部.xlsx
└── …
每个文件打开后,表头和原表长得一模一样 —— 字体、颜色、边框、列宽、数字格式、
多层合并表头完整保留。不是"看起来相似",是打开后该拉公式拉公式、该改数改数的完整 .xlsx。
几个比脚本强的地方
- 表头不在第一行也能自动找到 —— 前 15 行启发式扫描。有大标题、有空行的表都没问题
- 整个文件夹批量拆 —— 一次处理一个文件夹里所有的表,逐个处理,单个出错不中断整体
- 只拆其中几个值 —— 点「▸ 查看/勾选分组」勾掉不需要的,而且勾选结果会记住
- 设置自动记住 —— 下个月打开工具,上次的配置还在,不用重设
- 数据不出本机 —— 不联网、无遥测、断网可跑
什么时候你会需要"二级拆分"
如果收到这样的要求:「先按部门拆开,每个部门里再按人拆到每个人一份」——
勾一下「✅ 同时拆到人」,选「姓名」列,一次运行同时产出两套结果:
部门汇总 + 每个人一个独立文件,还自动按部门打包成 ZIP。
这是 Power Query 和大多数脚本模板做不到的。
四种方案横向对比

| 维度 | 手动筛选粘贴 | Power Query | Python 脚本 | ExcelRouter |
|---|---|---|---|---|
| 上手成本 | 低(但极耗时) | 低 | 高 | 低 |
| 保留原格式 | ⚠️ 容易乱 | ❌ | ⚠️ 需额外开发 | ✅ |
| 多层合并表头 | ❌ | ❌ | ⚠️ 需额外开发 | ✅ |
| 批量多文件 | 需手工重复 | 需手工重复 | ✅ | ✅ |
| 二级拆分到人 | 手工做两轮 | ❌ | 需自己实现 | ✅ |
| 自动打包 ZIP | ❌ | ❌ | 需自己实现 | ✅ |
| 数据出网 | 否 | 否 | 否 | 否(本地) |
| 需要写代码 | 否 | 否 | 是 | 否 |
一个选择建议(省时间版)
判断顺序就三步:
- 看表头结构 —— 单行普通表头,Power Query 就够;有多层表头或合并单元格,
必须选能保留格式的方案 - 看频率 —— 偶尔一次用自带功能;每周/每月都做、格式有要求,用能保留格式的工具
- 看是否要拆到人 —— 要拆到人(工资条、成绩单、考核表),Power Query 和多数脚本模板都做不了
下载
免费、免安装、免注册、无广告、不限次数,MIT 开源协议,商用也可以。
国内下载(推荐):
👉 https://gitee.com/Marsandsea/Excelrouter/releases
选文件名带 win64.zip 的 → 解压 → 双击 ExcelRouter.exe
GitHub:
👉 https://github.com/MarsandSea/ExcelRouter/releases
⚠️ 个别杀毒软件可能误报 —— PyInstaller 打包的常见现象,不是病毒。优先下 ZIP 版基本不触发。
常见问题
Q:我不会写代码,真能用吗?
能。选文件 → 选列名 → 点按钮。一行代码都不用写,也不用装 Python。
Q:表头不在第一行怎么办?
工具默认自动识别(扫描前 15 行)。识别不准时,「高级设置」里可以手动指定表头行号。
Q:拆出来文件名是什么?
就是那一列的取值本身。按「所属部门」拆就得到 销售一部.xlsx。取值里有
Windows 非法字符(\ / : * ? " < > |)会自动替换成下划线。目前不支持自定义文件名模板。
Q:某一列拆出来是空白?
大概率是那列有公式但从未被 Excel 计算过(没有缓存值)。用 Excel/WPS 打开原表,
Ctrl+S 保存一次再来拆。工具也会提前检测并预警。
Q:能拆多大的表?
实测几万行没问题。整个文件夹上百个文件也能跑。有实时进度和心跳日志,不会假死。
Q:能反过来把多个表合并成一个吗?
这不是通用合并工具。唯一的合并能力是在拆分过程中把同一个取值跨文件合并
(如 1–5 月每月一份表,按区域拆并且每个区域 5 个月合成一张)。
最后
「按某一列分类输出各个表格」这个需求本身不复杂,复杂的是格式不能乱这一条约束。
一旦把它当硬性条件,能选的方案就少了一大半。
工具免费开源,下载即用,不合用删掉就行。
觉得有用的话,去仓库点个 ⭐ Star,让更多人搜得到它。
作者:AbeLin
项目主页:https://github.com/MarsandSea/ExcelRouter
国内镜像:https://gitee.com/Marsandsea/Excelrouter
---
更多推荐




所有评论(0)