跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

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

Author Xiaoyang Last modified

如果你有一个包含多列和数百或数千行的大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中有很长的一列数据,查看起来会很麻烦。但现在,如果你能将这样的长列表拆分为多列,查看起来就会方便得多。

最佳Office办公效率工具

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

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


Office Tab为Office带来多标签界面,让您的工作更加轻松

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠