
工作中我们经常会遇到这样的场景:一个 Excel 工作簿里,有几十个工作表,需要把每个工作表拆分成单独的 Excel 文件;或者一个工作表里,有上万行的销售数据,需要按地区、按部门、按产品,拆分成多个工作表,手动一个个复制粘贴,不仅耗时久,还很容易出错,几十个文件拆下来,要浪费大半天的时间。
今天给大家分享 3 种 Excel 批量拆分的方法,零代码、零门槛,不用写任何 VBA 代码,新手也能一键操作,不管是拆分工作表,还是按条件拆分数据,都能 10 分钟搞定,效率提升几十倍。
一、批量拆分多个工作表为单独的工作簿
这个场景最常用:一个 Excel 文件里,有 1 月、2 月、3 月……12 月的工作表,需要把每个月的工作表,拆分成单独的 Excel 文件,保存到文件夹里,给大家分享 2 种零代码方法,新手直接套用。
方法一:右键移动复制法(适合少量工作表,3-5 个,新手首选)
如果你的工作表数量不多,只有几个,用这个方法最简单,不用任何设置,右键就能完成,零门槛,不会出错。
操作步骤:
- 打开包含多个工作表的 Excel 工作簿,在底部的工作表标签栏,选中你要拆分的第一个工作表,比如 “1 月”;
- 右键点击这个工作表标签,选择【移动或复制】;
- 在弹出的窗口里,【工作簿】下拉选择【新工作簿】,勾选【建立副本】(一定要勾选,否则原工作表会被移走,原文件里就没有了);
- 点击确定,Excel 会自动新建一个工作簿,里面只有你选中的这个工作表,直接点击【保存】,给文件命名,保存到指定的文件夹里即可;
- 同理,对其他需要拆分的工作表,重复上面的步骤,就能拆分成单独的工作簿了。避坑提醒:一定要勾选【建立副本】,否则原工作簿里的工作表会被移走,导致原文件内容丢失,新手一定要注意。
方法二:超级表 + Power Query 法(适合大量工作表,几十上百个,零代码一键拆分)
如果你的工作表数量很多,有几十个、上百个,用右键的方法太麻烦,用 Power Query 法,一键就能批量拆分所有工作表,零代码,不用写任何公式,新手也能操作。
操作步骤:
- 打开要拆分的 Excel 工作簿,点击顶部【数据】选项卡,点击【获取数据】-【自文件】-【从工作簿】;
- 在弹出的窗口里,选中你当前的这个工作簿文件,点击【导入】;
- 在弹出的导航器窗口里,勾选左下角的【选择多项】,勾选所有你要拆分的工作表,点击【转换数据】,进入 Power Query 编辑器;
- 在 Power Query 编辑器里,点击左侧【查询】面板里的第一个查询,按住 Shift 键,选中所有查询,右键点击,选择【加载到】;
- 在弹出的窗口里,选择【仅创建连接】,勾选【将此数据添加到数据模型】,点击【确定】;
- 回到 Excel 界面,点击顶部【数据】选项卡,点击【查询和连接】,右侧会出现所有的工作表连接,选中第一个连接,右键点击,选择【加载到】;
- 选择【新工作表】,点击【确定】,这个工作表就会被加载到新的工作簿里,保存即可;进阶批量拆分:如果你想要一键把所有工作表拆分成单独的文件,用 Power Query 的批量导出功能,配合简单的设置,就能一键完成,全程零代码,比手动复制快几十倍。
方法三:一键批量拆分 VBA 代码(终极方法,一键搞定所有工作表)
如果你经常需要拆分工作表,用这个 VBA 代码,一键就能把工作簿里所有的工作表,拆分成单独的 Excel 文件,自动命名,自动保存到同一个文件夹里,哪怕是上百个工作表,也能 10 秒搞定。
操作步骤:
- 打开要拆分的 Excel 工作簿,按下【Alt+F11】快捷键,调出 VBA 编辑器;
- 点击【插入】-【模块】,在弹出的代码窗口里,粘贴下面的完整代码:
- plaintext
Sub 批量拆分工作表为单独工作簿()
Dim sht As Worksheet
Dim savePath As String
savePath = ThisWorkbook.Path & "\"
For Each sht In ThisWorkbook.Worksheets
sht.Copy
ActiveWorkbook.SaveAs Filename:=savePath & sht.Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close SaveChanges:=False
Next
MsgBox "拆分完成!文件已保存到原工作簿所在文件夹", vbInformation
End Sub
- 按下【F5】键运行代码,等待几秒,会弹出 “拆分完成” 的提示框;
- 打开原工作簿所在的文件夹,就能看到所有拆分好的单独 Excel 文件,每个文件都用工作表名称命名,完美拆分,零失误。避坑提醒:运行代码前,一定要先保存原工作簿,否则代码无法获取保存路径,拆分后的文件会找不到;如果文件里有宏代码,要保存为.xlsm 格式。
二、按条件拆分单个工作表为多个工作表
这个场景也非常常用:一个工作表里,有上万行的销售数据,有地区、部门、产品等列,需要按地区,把每个地区的数据,拆分成单独的工作表,比如北京、上海、广州,每个地区一个工作表,给大家分享 2 种零代码方法,新手直接套用。
方法一:数据透视表法(新手首选,零代码,一键拆分)
用数据透视表的【显示报表筛选页】功能,一键就能按条件拆分数据,生成多个工作表,不用写任何公式,全程拖动鼠标就能完成,零基础新手也能学会。
操作步骤(按地区拆分销售数据为例):
- 打开销售数据工作表,先把源数据转换成超级表,选中数据区域,按下【Ctrl+T】快捷键,勾选【表包含标题】,点击确定,转换成超级表,后续新增数据会自动同步;
- 点击超级表里的任意单元格,点击【插入】-【数据透视表】,选择【新工作表】,点击确定,创建数据透视表;
- 在右侧的字段面板里,把你要拆分的字段,比如【地区】,拖动到【筛选器】区域;把其他所有字段,拖动到【行】区域;
- 点击顶部【数据透视表分析】选项卡,点击【选项】下拉箭头,选择【显示报表筛选页】;
- 在弹出的窗口里,选择【地区】,点击确定,Excel 会一键生成多个工作表,每个工作表对应一个地区的数据,完美拆分,不用手动复制粘贴。避坑提醒:把字段拖动到【行】区域时,不要拖动到【值】区域,否则会变成汇总数据,不是明细数据,一定要注意。
方法二:Power Query 法(适合大数据量,动态更新,零代码)
如果你的数据量很大,有几十万行,或者后续会经常新增数据,用 Power Query 法拆分,后续只要刷新一下,就能自动同步新增数据,不用重新拆分,非常方便,零代码操作。
操作步骤:
- 选中数据区域,按下【Ctrl+T】转换成超级表,点击【数据】选项卡,点击【自表格 / 区域】,进入 Power Query 编辑器;
- 在 Power Query 编辑器里,选中你要拆分的列,比如【地区】,点击顶部【转换】选项卡,点击【分组依据】;
- 在弹出的窗口里,【分组依据】选择【高级】,分组列选择【地区】,新列名输入【数据】,操作选择【所有行】,点击确定;
- 编辑器里会出现按地区分组的表格,每个地区对应一行数据,点击【主页】选项卡,点击【关闭并上载至】;
- 选择【仅创建连接】,点击确定,回到 Excel 界面,点击【查询和连接】,右键点击这个查询,选择【加载到】;
- 选择【表】,【新工作表】,点击确定,就能按地区拆分出多个工作表,后续源数据新增内容,只要右键点击【刷新】,就能自动同步,非常方便。
三、常见问题解决方案
- 拆分后的文件,格式和原文件不一致:拆分前,先把原工作表的格式、列宽、行高设置好,用复制的方式拆分,不要用值粘贴,就能保留原格式;
- 拆分后的文件,公式出现 #REF! 错误:原工作表里有跨工作表引用的公式,拆分后引用的工作表不存在了,就会报错,拆分前,把公式转换成数值,就能避免这个问题;
- Power Query 拆分后,数据不全:检查源数据里有没有空行、空列,表头是否规范,把源数据整理规范,再重新加载即可;
- 运行 VBA 代码后,提示宏被禁用:点击【文件】-【选项】-【信任中心】-【信任中心设置】-【宏设置】,选择【启用所有宏】,点击确定,重新打开文件,就能运行代码了。
进阶技巧:AI 一键拆分 Excel 工作表 / 工作簿
如果你记不住复杂的操作步骤,用 Excel 自带的 AI Copilot,一句话就能帮你完成批量拆分,不用手动操作,非常适合新手。
- 打开 Excel 表格,调出 Copilot 助手,输入你的拆分需求,比如 “帮我把这个工作簿里的所有工作表,拆分成单独的 Excel 文件,用工作表名称命名,保存到原文件所在的文件夹”;
- Copilot 会自动帮你生成对应的 VBA 代码,同时教你怎么运行代码,一键完成拆分;
- 也可以输入按条件拆分的需求,比如 “帮我把这个销售数据表,按地区拆分成多个工作表,每个地区一个工作表,保留原数据的所有列和格式”,AI 会一步步教你用数据透视表完成拆分,全程零门槛。
总结
以上 3 种方法,覆盖了 Excel 批量拆分的所有场景:少量工作表拆分,用右键移动复制法;大量工作表批量拆分,用 Power Query 法或者 VBA 代码一键拆分;按条件拆分明细数据,用数据透视表法,零代码、零门槛,新手也能一键操作。
学会这些方法,再也不用手动一个个复制粘贴拆分文件,10 分钟就能搞定手动一天的工作量,大幅提升你的工作效率,告别无效加班。










