跳至主要内容

如何在Excel中将一个大表格拆分为多个小表格?

Author: Xiaoyang Last Modified: 2025-05-07

如果你有一个包含多列和数百或数千行的大Excel表格,你可能希望将其拆分为更小、更易管理的表格。例如,你可能需要根据特定列的值来分离数据,或者将其按固定行数进行分割。本教程提供了逐步的方法,帮助你高效完成此任务。

主表   按列值将表格拆分为多个表格 按行数将表格拆分为多个表格
A screenshot of a large table in Excel before splitting Arrow A screenshot of an Excel table split by column values A screenshot of an Excel table split by row count

使用VBA代码根据列值将大表格拆分为多个表格

使用VBA代码根据指定行数将大表格拆分为多个表格

使用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”键运行此代码,会弹出一个提示框,请从你的数据中选择标题行,见截图:

A screenshot showing how to select the header row for splitting tables

4. 然后点击“确定”,又会弹出一个对话框,请选择你想要基于其拆分表格的列数据,见截图:

A screenshot showing how to select the column for splitting tables by values

5. 点击“确定”。现在,大表格已经根据列值被拆分到多个工作表中,新工作表位于主工作表之后,并且新工作表以列值命名。见截图:

A screenshot showing multiple worksheets created after splitting by column values


使用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”键,在弹出的对话框中选择标题行,见截图:

A screenshot showing how to select the header row for splitting by row count

4. 然后点击“确定”,在第二个提示框中,选择你想要按行数拆分的数据区域,见截图:

A screenshot showing how to select the data range for splitting by rows

5. 接着继续点击“确定”按钮,在第三个提示框中输入你想要按行数拆分的行数,见截图:

A screenshot showing how to enter the number of rows for splitting in Excel

6. 然后点击“确定”按钮,主表格已经被按行数拆分为多个工作表,如下图所示:

A screenshot of multiple worksheets created after splitting by row count


使用Kutools for Excel根据列值或行数将大表格拆分为多个表格

上述代码对大多数用户来说可能比较困难,这里我将介绍一个强大的功能——“Kutools for Excel”的“分割数据”功能。借助这个工具,你可以快速轻松地通过关键列或行数将大表格拆分为多个表格。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

1. 选择你想要拆分的数据区域,然后点击“Kutools Plus” > “分割数据”,见截图:

2. 在“将数据分割到多个工作表”对话框中,根据需求指定设置:

(1.) 根据需要从“分割依据”部分选择“指定列”或“固定行”;

(2.) 从“规则”下拉列表中指定新工作表名称,还可以为工作表名称添加“前缀”或“后缀”。

A screenshot showing settings for splitting data using Kutools

3. 然后点击“确定”按钮,现在,大表格已经被拆分为多个小表格并存放在一个新的工作簿中。见截图:

按列值将表格拆分为多个表格 按行数将表格拆分为多个表格
A screenshot of an Excel table split into worksheets by column values using Kutools A screenshot of an Excel table split into worksheets by row count using Kutools

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取


更多相关文章:

  • 在Excel中将工作簿拆分为单独的Excel文件
  • 你可能需要将一个大的工作簿拆分为单独的Excel文件,保存每个工作表作为单独的Excel文件。例如,你可以将一个工作簿拆分为多个单独的Excel文件,然后将每个文件交给不同的人处理。这样可以让某些人处理特定的数据,并确保你的数据安全。本文将介绍如何基于每个工作表将一个大的工作簿拆分为单独的Excel文件。
  • 在Excel中将全名拆分为名字和姓氏
  • 假设你有一个如第一个屏幕截图所示的名字花名册,你需要将全名拆分为名字列、中间名列和姓氏列,如下图所示。这里有一些巧妙的方法可以帮助你解决这个问题。
  • 在Excel中将长列拆分为多列
  • 如果你在Excel中有很长的一列数据,查看起来会很麻烦。但现在,如果你能将这样的长列表拆分为多列,查看起来就会方便得多。

最佳办公效率工具

🤖 Kutools AI 助手:基于智能执行生成代码创建自定义公式分析数据并生成图表调用 Kutools 函数等功能,彻底改变数据分析方式…
热门功能查找、高亮或标记重复项 | 删除空行 | 合并不丢失数据的列或单元格 | 四舍五入 ...
高级 LOOKUP多条件 VLookup | 多值 VLookup | 多表查找 | 模糊查找 ....
高级下拉列表快速创建下拉列表 | 从属下拉列表 | 多选下拉列表 ....
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域和列 ...
精选功能网格聚焦 | 设计视图 | 增强编辑栏 | 工作簿与工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按列表发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/斜体/删除线...)...
排名前 15 的工具集12 种文本 工具添加文本删除特定字符等) | 50 多 种图表 类型甘特图等) | 40 多种实用 公式基于生日计算年龄等) | 19 种插入 工具插入二维码根据路径插入图片等) | 12 种转换 工具小写金额转大写汇率转换等) | 7 种合并与分割 工具高级合并行分割单元格等) | 还有更多...

使用 Kutools for Excel 提升您的 Excel 技能,体验前所未有的高效。 Kutools for Excel 提供超过 300 种高级功能来提高生产力并节省时间。 单击此处获取您最需要的功能...


Office Tab 将标签式界面引入 Office,让您的工作更加轻松

  • 在 Word、Excel、PowerPoint 中启用标签式编辑和阅读
  • 在同一窗口的新标签页中打开和创建多个文档,而不是在新窗口中进行操作。
  • 将您的生产力提升 50%,每天为您减少数百次鼠标点击!