Excel 技巧:根据列值将数据分割到多个工作表/工作簿
在 Excel 中管理大型数据集时,根据特定列值将数据分割到多个工作表中会非常有用。这种方法不仅能够改善数据的组织方式,还能提高可读性,并使数据分析更加便捷。
假设您有一个包含多条记录的大型销售数据,其中包括产品名称、第一季度的销售数量等信息。目标是根据每个产品名称将这些数据分割到不同的工作表中,以便单独分析每个产品的销售表现。
根据列值将数据分割到多个工作表
通常情况下,您可以先对数据列表进行排序,然后逐一手动复制并粘贴到其他新的工作表中。但这需要耐心反复操作。在本节中,我们将介绍两种简单直接的方法,帮助您高效地完成此任务,节省时间并减少出错的可能性。
使用 VBA 代码根据列值将数据分割到多个工作表
1. 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications 窗口。
2. 单击 插入 > 模块,并将以下代码粘贴到模块窗口中。
Sub Splitdatabycol()
'updateby 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
Dim xWS 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
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.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. 当前工作表中的所有数据都根据列值被分割到多个工作表中。生成的工作表根据分割单元格中的值命名,并放置在工作簿的末尾。请参见截图:
使用 Kutools for Excel 根据列值将数据分割到多个工作表
Kutools for Excel 将智能功能——分割数据直接引入您的 Excel 环境。将数据分割到多个工作表不再是一个挑战。我们的直观工具会根据所选列值或行数自动划分数据集,确保每一条信息都准确无误地出现在您需要的地方。告别手动整理电子表格的繁琐任务,拥抱更快捷、无错误的数据管理方式。
安装 Kutools for Excel 后,选择数据区域,然后点击 Kutools Plus > 分割数据 打开 分割数据到多个工作表 对话框。
- 在 分割依据 部分选择 指定列 选项,并从下拉列表中选择要基于其分割数据的列值。
- 如果您的数据包含标题并且希望将其插入到每个新分割的工作表中,请勾选 我的数据包含标题 选项。(您可以根据数据指定标题行的数量。例如,如果您的数据包含两个标题,请输入 2。)
- 然后,您可以指定分割后工作表的名称,在 新工作表名 部分,从 规则 下拉列表中指定工作表名称规则,还可以为工作表名称添加 前缀 或 后缀。
- 点击 确定 按钮。请参见截图:
现在,工作表中的数据已分割到新工作簿中的多个工作表中。
使用 VBA 代码根据列值将数据分割到多个工作簿
有时,与其将数据分割到多个工作表中,不如根据关键列将数据分割到单独的工作簿中更有益处。以下是使用 VBA 代码自动化根据特定列值将数据分割到多个工作簿的过程的逐步指南。
1. 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications 窗口。
2. 单击 插入 > 模块,并将以下代码粘贴到 模块窗口 中。
Sub SplitDataByColToWorkbooks()
' Updateby Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWS As Workbook
Dim savePath As String
' Set the directory to save new workbooks
savePath = "C:\Users\AddinsVM001\Desktop\multiple files\" ' Modify this path as needed
Application.DisplayAlerts = False
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.Address(False, False)
titlerow = xTRg.Row
ws.Columns(vcol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Cells(1, ws.Columns.Count), Unique:=True
myarr = Application.Transpose(ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).Value)
ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).ClearContents
For i = 2 To UBound(myarr)
Set xWS = Workbooks.Add
ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i)
ws.Range("A" & titlerow & ":A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Copy
xWS.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
xWS.SaveAs Filename:=savePath & myarr(i) & ".xlsx"
xWS.Close SaveChanges:=False
Next i
ws.AutoFilterMode = False
Application.DisplayAlerts = True
ws.Activate
End Sub
3. 然后,按下 F5 键运行代码,弹出一个提示框,提醒您选择标题行,然后单击 确定。请参见截图:
4. 在第二个提示框中,请选择要基于其分割的列数据,然后单击 确定。请参见截图:
5. 分割完成后,当前工作表中的所有数据都根据列值被分割到多个工作簿中。所有分割后的工作簿都被保存到您指定的文件夹中。请参见截图:
相关文章:
- 按行数将数据分割到多个工作表
- 根据特定行数将大型数据范围分割到多个 Excel 工作表中可以简化数据管理。例如,每隔 5 行将数据集分割到多个工作表中,可以使数据更易于管理和组织。本指南提供了两种实用方法,帮助您快速轻松地完成此任务。
- 根据关键列合并两个或多个表格
- 假设您在一个工作簿中有三个表格,现在您想根据对应的关键列将这些表格合并为一个表格,以获得如下截图所示的结果。这对我们大多数人来说可能是一项麻烦的任务,但请不要担心,本文将介绍一些解决此问题的方法。
- 通过分隔符将文本字符串分割为多行
- 通常情况下,您可以使用“文本转列”功能通过特定分隔符(如逗号、点、分号、斜杠等)将单元格内容分割为多列。但是,有时您可能需要将带分隔符的单元格内容分割为多行,并重复其他列中的数据,如下截图所示。您是否有任何好方法来处理 Excel 中的此任务?本教程将介绍一些有效的方法来完成此任务。
- 将多行单元格内容分割为分离的行/列
- 假设您有多行单元格内容,它们由 Alt + Enter 分隔,现在您需要将多行内容分割为分离的行或列,您该怎么办?本文将教您如何快速将多行单元格内容分割为分离的行或列。
最佳办公效率工具
🤖 | 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%,每天为您减少数百次鼠标点击!