如何在Excel中将一个大表拆分为多个小表?
现在,如果您有一个包含多列和成百上千行数据的大型工作表,则希望根据列值或行数将该大型表拆分为多个小型表,以获得以下结果。 您如何在Excel中处理此任务?
主表 | 按列值将表拆分为多个表 | 按行数将表拆分为多个表 | |
使用VBA代码根据列值将大表拆分为多个表
若要根据特定的列值将此大表拆分为多个表,请使用以下VBA代码。 请这样做:
1。 按住 ALT + F11 键打开 Microsoft Visual Basic应用程序 窗口。
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。 然后,点击 OK,然后会弹出另一个对话框,请选择要用于拆分表的列数据,请参见屏幕截图:
5。 点击 OK,此大表已通过位于主表之后的列值拆分为多个工作表。 并且新工作表使用列值命名。 看截图:
使用VBA代码根据特定的行数将一个大表拆分为多个表
如果需要根据行数将表拆分为多个表,则以下VBA代码可以为您提供帮助。
1。 按住 ALT + F11 键打开 Microsoft Visual Basic应用程序 窗口。
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。 然后,点击 OK,然后在第二个提示框中,选择要按行计数拆分的数据范围,请参见屏幕截图:
5。 然后,继续点击 OK 按钮,在第三个提示框中,输入要分割的行数,请参见屏幕截图:
6。 然后,点击 OK 按钮,主表已根据行数分为多个工作表,如下图所示:
基于列值或行数将大型表拆分为多个表,具有惊人的功能
可能上述代码对大多数用户来说很困难,在这里,我将介绍一个很棒的功能-拆分数据 of Kutools for Excel。 使用此实用程序,您可以快速,轻松地按键列或行数将一个大表拆分为多个表。
提示:申请这个 拆分数据 功能,首先,您应该下载 Kutools for Excel,然后快速轻松地应用该功能。
安装后 Kutools for Excel,请这样做:
1。 选择要拆分的数据范围,然后单击 Kutools 加 > 拆分数据,请参见屏幕截图:
2。 在 将数据拆分为多个工作表 对话框中,指定所需的设置:
(1.)选择 特定栏 or 固定行 来自 分割依据 您需要的部分;
(2.)从 规则 下拉列表中,您可以添加 字首 or 后缀 以及工作表名称。
3。 然后,点击 Ok 按钮,现在,大表已在新工作簿中拆分为多个小表。 查看屏幕截图:
按列值将表拆分为多个表 | 按行数将表拆分为多个表 |
更多相关文章:
- 拆分工作簿以在Excel中分离Excel文件
- 您可能需要将一个大型工作簿拆分为单独的Excel文件,然后将工作簿的每个工作表另存为单独的Excel文件。 例如,您可以将工作簿拆分为多个单独的Excel文件,然后将每个文件交付给不同的人来处理。 这样,您可以使某些人处理特定数据,并确保您的数据安全。 本文将介绍根据每个工作表将大型工作簿拆分为单独的Excel文件的方法。
- 在Excel中将全名拆分为名字和姓氏
- 假设您有一个名称列表,如下面的单个列中所示,第一个屏幕快照,则需要将全名拆分为名字列,中间名称列和姓氏列,如下面的屏幕快照所示。 这里有一些棘手的方法可以帮助您解决此问题。
- 在Excel中将长列拆分为多列
- 如果您在Excel中有很长的列数据,则在查看它们时会很麻烦。 但是现在,如果您可以在Excel中将如此长的列表拆分为多个列,则将使查看变得很方便。
- 在Excel中将单词或数字拆分为单独的单元格
- 如果您在工作表中有数字或单词的列表,现在需要按照下面的屏幕快照将单元格内容拆分为不同单元格上的字母,那么如何在Excel中处理此工作?
- 在Excel中将长列表拆分成相等的组
- 如果需要将一长串数据分成多个相等的组,如下面的屏幕截图所示,那么如何在Excel中快速轻松地处理此任务?
- 超级公式栏 (轻松编辑多行文本和公式); 阅读视图 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
- 合并单元格/行/列 和保存数据; 拆分单元格内容; 合并重复的行和总和/平均值...防止细胞重复; 比较范围...
- 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
- 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
- 收藏并快速插入公式,范围,图表和图片; 加密单元 带密码 创建邮件列表 并发送电子邮件...
- 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
- 超级筛选 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
- 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
- 数据透视表分组依据 周号,周几等 显示未锁定的单元格 用不同的颜色 突出显示具有公式/名称的单元格...
- 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
- 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
- 每天将您的工作效率提高50%,并减少数百次鼠标单击!