如何在 Excel 中为每一行创建新工作表?
在数据管理或报表任务中,有时您可能需要将表格中的每条记录分离到各自的工作表中。例如,如果您在 Excel 中维护一个学生信息列表,其中每一行代表不同学生的信息,您可能希望为每个学生生成单独的工作表,每个工作表包含其特定的数据。或者,您可以简单地将每一行(无论其内容为何)分割开来,使每一行都放置在单独的新工作表中。手动创建和复制数据到新工作表可能会非常耗时且容易出错,尤其是当您处理大型数据集时。自动化此过程可以节省大量时间并减少出错的风险。本指南将向您介绍两种在 Excel 中为每一行创建新工作表的实用方法,并解释每种方法的优缺点,以帮助您选择最适合您场景的方法。
使用 VBA 代码为每一行创建新工作表
使用 Kutools for Excel 的 Split Data 工具为每一行创建新工作表
使用 VBA 代码为每一行创建新工作表
使用 VBA(Visual Basic for Applications)是一种有效的方式来自动执行原本繁琐而重复的 Excel 任务。通过 VBA,您可以快速为数据中的每一行创建新的工作表,既可以按某一列(如学生姓名)对行进行分组,也可以忽略内容为每一行创建一个工作表。这种方法非常适合熟悉 VBA 编辑器、并且偏好高度可定制解决方案的用户。然而,该方法确实需要编辑和运行代码,因此可能不适合没有 VBA 经验或在其环境中无权运行宏的用户。
1. 按下 "Alt" + "F11" 打开 Microsoft Visual Basic for Applications 窗口,允许您访问用于自动执行 Excel 操作的 VBA 代码。
2. 在 Microsoft Visual Basic for Applications 窗口中,点击 插入 > 模块 以添加新的代码模块。然后将以下代码复制并粘贴到模块窗口中。
VBA 代码:基于列值为每一行创建新工作表
Sub parse_data()
'Update by Extendoffice 2018/3/2
Dim xRCount As Long
Dim xSht As Worksheet
Dim xNSht As Worksheet
Dim I As Long
Dim xTRrow As Integer
Dim xCol As New Collection
Dim xTitle As String
Dim xSUpdate As Boolean
Set xSht = ActiveSheet
On Error Resume Next
xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
xTitle = "A1:C1"
xTRrow = xSht.Range(xTitle).Cells(1).Row
For I = 2 To xRCount
Call xCol.Add(xSht.Cells(I, 1).Text, xSht.Cells(I, 1).Text)
Next
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
For I = 1 To xCol.Count
Call xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
Set xNSht = Nothing
Set xNSht = Worksheets(CStr(xCol.Item(I)))
If xNSht Is Nothing Then
Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
xNSht.Name = CStr(xCol.Item(I))
Else
xNSht.Move , Sheets(Sheets.Count)
End If
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Next
xSht.AutoFilterMode = False
xSht.Activate
Application.ScreenUpdating = xSUpdate
End Sub
参数说明及使用提示:
- A1:C1 是您的数据表标题范围。根据需要调整此引用以匹配实际的数据标题区域。
- 代码从指定列(默认为 A 列)收集唯一值。每个唯一值都会获得自己的工作表及其对应的行。
- 如果您的表格更宽或起始行不同,请相应更新
xTitle
和单元格引用。 - 如果您的工作表包含引用其他工作表的公式,请在分割后检查引用。
3. 按 F5 键或点击 运行 来执行代码。新工作表将在当前工作簿的所有现有工作表之后创建,每个工作表的名称根据选定的唯一列值命名。请参阅下面的截图以查看示例结果:
如果您希望简单地将每一行分割到它自己的工作表中,而不考虑列内容,您可以使用以下替代 VBA 代码。这消除了指定列条件的必要。
VBA 代码:直接为每一行创建新工作表
Sub RowToSheet()
Dim xRow As Long
Dim I As Long
With ActiveSheet
xRow = .Range("A" & Rows.Count).End(xlUp).Row
For I = 1 To xRow
Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
.Rows(I).Copy Sheets("Row " & I).Range("A1")
Next I
End With
End Sub
在此模块中运行此代码后,活动工作表中的每一行(包括标题行)都将被复制到新创建的工作表中。请注意,标题行也会被复制;如果您希望避免这种情况,您可能需要在之后手动删除或调整输出工作表。
故障排除与实用提示:
- 如果遇到“下标越界”之类的错误,请确保工作表名称不包含无效字符或重复名称。
- 大型数据集可能会导致大量工作表,这可能会减慢 Excel 或让导航变得麻烦。对于极其庞大的表格,请考虑是否有必要按行拆分。
- 在运行 VBA 代码之前,始终备份您的数据,以防意外数据丢失。
优点: 免费;高度可定制。
缺点: 需要启用 VBA/宏,并具备一定的 VBA 编辑器知识;复杂或非正常数据可能导致代码错误。
适合: 需要脚本灵活性的用户,以及一次性或不定期任务。
使用 Kutools for Excel 的 Split Data 工具为每一行创建新工作表
如果您倾向于一种无需编写代码的简单、用户友好的方法,Kutools for Excel 的 Split Data 工具是非常推荐的。该功能只需几次点击即可帮助您将数据分割到新的工作表中,大大简化了工作表管理的过程。Kutools 特别适用于经常处理大型复杂表格或偏爱图形界面而非手动编码的用户。请注意,Kutools 是 Excel 的加载项,必须提前安装。
1. 选择包含要分割到各个工作表的数据的表格。然后,点击 Kutools Plus 标签并选择 Split Data。请参考下面的截图以便清晰了解:
2. 在 分割数据至多个工作表 对话框中,根据您的拆分需求选择适当的设置。
A. 基于列值创建新工作表:
B. 直接为每一行创建新工作表:
执行后,将生成一个包含所有新工作表的新工作簿——每个工作表根据您选择的设置填充。
基于列值为每一行创建新工作表:
不考虑列值为每一行创建新工作表:
注意事项与实用提示:
- 在使用 Split Data 工具之前,请确保您的表格中没有空白行,因为这些会导致空工作表。
- 检查工作表命名约定以避免重复或无效的工作表名称;如果发生名称冲突,Kutools 将自动调整。
- 如果您的表格非常大,该过程可能会生成大量工作表,因此在继续操作前请加以考虑。
优点: 易于使用,无需编码;适合批量处理和频繁任务。
缺点: 需要安装 Kutools 加载项。
适合: 各级 Excel 用户,特别是那些处理重复数据分割任务的用户。
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
演示:使用 Kutools for Excel 的 Split Data 工具为每一行创建新工作表
最佳 Office 办公效率工具
🤖 | Kutools AI 助手:基于智能执行,彻底革新数据分析 |生成代码|创建自定义公式|分析数据并生成图表|调用 Kutools Functions… |
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)... | |
高级 LOOKUP:多条件查找 (VLookup)|多值查找 (VLookup)|多表查找 (VLookup Across Multiple Sheets)|模糊查找 (Fuzzy Lookup)... | |
高级下拉列表:快速创建下拉列表|依赖型下拉列表|多选下拉列表... | |
列管理器:添加指定数量的列 |移动列 |切换隐藏列的可见状态| 比较区域及列... | |
特色功能:网格聚焦|设计视图|增强编辑栏|工作簿 & 工作表管理器|资源库(自动文本)|日期提取|合并数据|加密/解密单元格|按列表发送电子邮件|超级筛选|特殊筛选(筛选粗体/倾斜/删除线等)... | |
热门15 大工具集:12 款文本工具(添加文本、删除特定字符等)|50+ 种图表 类型(甘特图等)|40+ 实用公式(基于生日计算年龄等)|19 款插入工具(插入二维码、按路径插入图片等)|12 种转换工具(小写金额转大写、汇率转换等)|7 款合并与分割工具(高级合并行、分割单元格等)|...更多精彩等你发现 |
用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...
Office Tab 为 Office 带来标签式界面,让你的工作更加轻松
- 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
- 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
- 办公效率提升50%,每天帮你减少上百次鼠标点击!