如何在 Excel 中将大型表格拆分为多个小型表格?
如果您有一个包含多列及数百甚至数千行的大型 Excel 表格,或许希望将其拆分为更小、更易管理的表格。例如,您可能需要根据指定列的值拆分数据,或将其划分为固定行数的数据块。本教程将为您提供清晰的分步方法,助您高效完成此任务。
| 主表 | 按列值将表格拆分为多个表格 | 按行数将表格拆分为多个表格 | |
![]() | ![]() | ![]() | ![]() |
使用 Kutools for Excel 按列值或行数将大型表格拆分为多个表格
使用 VBA 代码按列值将大型表格拆分为多个表格
要根据指定列的值将此大型表格拆分为多个表格,以下 VBA 代码可助您一臂之力。请按以下步骤操作:
1. 按住“Alt”+“F11”键,即可打开“Microsoft Visual Basic for Applications”窗口。
2. 单击“插入”>“模块”,并将以下代码粘贴到弹出的“模块”窗口中。
VBA 代码:按关键列将大型表格拆分为多个表格:
Sub Splitdatabycol()
'by Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub
3. 粘贴代码后,按下“F5”键运行代码,此时将弹出一个提示框,请选择数据中的标题行,参见截图:

4. 然后单击“确定”,系统将弹出另一个对话框,请选择您希望用于拆分表格的列数据,参见截图:

5. 单击“确定”。大型表格现已根据列值拆分为多个工作表,这些新工作表位于主工作表之后,并以对应的列值命名。参见截图:

使用 VBA 代码按指定行数将大型表格拆分为多个表格
如果需要根据行数将表格拆分为多个表格,以下 VBA 代码可助您一臂之力。
1. 按住“Alt”+“F11”键,即可打开“Microsoft Visual Basic for Applications”窗口。
2. 单击“插入”>“模块”,并将以下代码粘贴到弹出的“模块”窗口中。
VBA 代码:按行数将大型表格拆分为多个表格:
Sub Splitdatabyrows()
'Updated by Extendoffice
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub
SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub
Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1
Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
resizeCount = SplitRow
If (xIER - xRow.Row + 1) < SplitRow Then
resizeCount = (xIER - xRow.Row + 1)
End If
xRow.Resize(resizeCount).Copy
Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
If xIER > (xRow.Row + SplitRow - 1) Then
xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
ElseIf xIER = xRow.Row Then
xWs.Name = xRow.Row
Else
xWs.Name = xRow.Row & " - " & xIER
End If
Application.ActiveSheet.Range("A1").PasteSpecial
Set xNTRg = Application.ActiveSheet.Range("A1")
xTRg.Copy
xNTRg.Insert
Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
3. 然后按下“F5”键,在弹出的对话框中选择标题行,参见截图:

4. 然后单击“确定”,在第二个提示框中选择您希望按行数拆分的数据区域,参见截图:

5. 接着继续单击“确定”按钮,在第三个提示框中输入您希望拆分的行数,参见截图:

6. 然后单击“确定”按钮,主表格将按行数拆分为多个工作表,如下方截图所示:

使用 Kutools for Excel 按列值或行数将大型表格拆分为多个表格
上述代码对大多数用户来说可能略显复杂。在此,我将为您介绍一项强大功能——“Kutools for Excel”中的“分割数据”。借助这一工具,您可快速、轻松地按关键列或指定行数,将大型表格拆分为多个独立表格。
1. 请选择您要拆分的数据区域,然后单击“KUTOOLS PLUS”>“分割数据”,具体操作请参见截图:

2. 在“分割数据至多个工作表”对话框中,根据需要指定以下设置:
(1.) 在“分割依据”部分中,根据需要选择“指定列”或“固定值”;
(2.) 在“规则”下拉列表中指定创建工作表的名称,还可为工作表名称添加“前缀”或“后缀”。

3. 然后单击“确定”按钮,大型表格随即在新工作簿中被拆分为多个小型表格。参见截图:
| 按列值将表格拆分为多个表格 | 按行数将表格拆分为多个表格 |
![]() | ![]() |
Kutools for Excel——通过 300 多款必备工具全面增强 Excel 功能,助您工作更快速、更轻松,并借助 AI 功能实现更智能的数据处理与高效办公!立即获取
更多相关文章:
- 在 Excel 中将工作簿拆分为独立的 Excel 文件
- 您可能需要将一个大型工作簿拆分为多个独立的 Excel 文件,即将其中每个工作表另存为单独的 Excel 文件。例如,您可以将工作簿按工作表拆分后,将各个文件分发给不同人员处理,从而指定专人负责特定数据,有效保障数据安全。本文将为您介绍如何根据每个工作表,将大型工作簿拆分为独立的 Excel 文件。
- 在 Excel 中将全名拆分为首列和姓氏
- 假设您有一个如第一张截图所示的单列姓名名单,现在需要将其拆分为名字、中间名和姓氏三列,效果如以下截图所示。以下是几种巧妙的方法,可助您轻松实现这一目标。
- 在 Excel 中将长列拆分为多列
- 在 Excel 中,面对一列冗长的数据,浏览起来往往十分不便;若能将其拆分为多列显示,将显著提升查看的便捷性。
- 在 Excel 中将单词或数字拆分为独立单元格
- 如果您在工作表中有一列数字或文字,现在需要将每个单元格的内容拆分为单个字母(如下方截图所示),在 Excel 中该如何操作?
- 在 Excel 中将长列表拆分为相等的组
- 如果您有一份冗长的数据列表,需要将其快速拆分为多个大小相等的组(如下方截图所示),在 Excel 中该如何轻松实现?
最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……
Office Tab 为 Office 带来标签式界面,让您的工作更轻松
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
- 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
- 将您的工作效率提升 50%,每天减少数百次鼠标点击!
所有 Kutools 插件,一个安装程序
Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱





