如何在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中将长列表拆分为等量组
- 如果你有一个需要拆分为多个等量组的长列表,如下图所示,你该如何在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%,每天为您减少数百次鼠标点击!