如何在 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函数…… |
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入…… | |
高级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%的工作效率,每天为您减少数百次鼠标点击!
所有Kutools加载项,一键安装
Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。





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