跳至主要内容

如何在 Excel 中为每一行创建新工作表?

Author: Siluvia Last Modified: 2025-07-31

在数据管理或报表任务中,有时您可能需要将表格中的每条记录分离到各自的工作表中。例如,如果您在 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 键或点击 运行 来执行代码。新工作表将在当前工作簿的所有现有工作表之后创建,每个工作表的名称根据选定的唯一列值命名。请参阅下面的截图以查看示例结果:

A screenshot showing a new workbook with sheets created from each row based on column value

如果您希望简单地将每一行分割到它自己的工作表中,而不考虑列内容,您可以使用以下替代 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 ExcelSplit Data 工具是非常推荐的。该功能只需几次点击即可帮助您将数据分割到新的工作表中,大大简化了工作表管理的过程。Kutools 特别适用于经常处理大型复杂表格或偏爱图形界面而非手动编码的用户。请注意,Kutools 是 Excel 的加载项,必须提前安装。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

1. 选择包含要分割到各个工作表的数据的表格。然后,点击 Kutools Plus 标签并选择 Split Data。请参考下面的截图以便清晰了解:

A screenshot of the 'Split Data' option under the Kutools Plus tab in Excel

2. 在 分割数据至多个工作表 对话框中,根据您的拆分需求选择适当的设置。

A. 基于列值创建新工作表:

1). 选择 指定列 选项,然后指定要用作拆分依据的列——通常是一个唯一标识符,如学生姓名或 ID。
2). 如果您希望每个工作表以其在该列中的值命名,请从 规则 下拉菜单中选择 Values of Column
3). 点击 确定 执行拆分。请参见下面的截图:

A screenshot of the 'Split Data into Multiple Worksheets' dialog box with settings for splitting by column value

B. 直接为每一行创建新工作表:

1). 选择 固定值 选项,并在框中输入 1,表示每个工作表应仅包含一行数据。
2). 在 规则 下拉菜单中,选择 行号 以行索引标记每个工作表。
3). 点击 确定 开始拆分过程。请参见下面的截图:

A screenshot of the 'Split Data into Multiple Worksheets' dialog box with settings for splitting by row

执行后,将生成一个包含所有新工作表的新工作簿——每个工作表根据您选择的设置填充。

基于列值为每一行创建新工作表:

A screenshot showing a new workbook with sheets created from each row based on column value

不考虑列值为每一行创建新工作表:

A screenshot showing a new workbook with sheets created from each row without considering the column value

注意事项与实用提示:
- 在使用 Split Data 工具之前,请确保您的表格中没有空白行,因为这些会导致空工作表。
- 检查工作表命名约定以避免重复或无效的工作表名称;如果发生名称冲突,Kutools 将自动调整。
- 如果您的表格非常大,该过程可能会生成大量工作表,因此在继续操作前请加以考虑。

优点: 易于使用,无需编码;适合批量处理和频繁任务。
缺点: 需要安装 Kutools 加载项。
适合: 各级 Excel 用户,特别是那些处理重复数据分割任务的用户。

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取


演示:使用 Kutools for Excel 的 Split Data 工具为每一行创建新工作表

 
Kutools for Excel:超过 300 种实用工具触手可及!永久免费享受 AI 功能!立即下载!

最佳 Office 办公效率工具

🤖 Kutools AI 助手:基于智能执行,彻底革新数据分析 生成代码创建自定义公式分析数据并生成图表调用 Kutools Functions
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)...
高级 LOOKUP多条件查找 (VLookup)多值查找 (VLookup)多表查找 (VLookup Across Multiple Sheets)模糊查找 (Fuzzy Lookup)...
高级下拉列表快速创建下拉列表依赖型下拉列表多选下拉列表...
列管理器添加指定数量的列移动列切换隐藏列的可见状态比较区域及列...
特色功能网格聚焦设计视图增强编辑栏工作簿 & 工作表管理器资源库(自动文本)|日期提取合并数据加密/解密单元格按列表发送电子邮件超级筛选特殊筛选(筛选粗体/倾斜/删除线等)...
热门15 大工具集12 款文本工具添加文本删除特定字符等)50+ 种图表 类型甘特图等)40+ 实用公式基于生日计算年龄等)19 款插入工具插入二维码按路径插入图片等)12 种转换工具小写金额转大写汇率转换等)7 款合并与分割工具高级合并行分割单元格等)...更多精彩等你发现
使用 Kutools,支持您的首选语言——包括英语、西班牙语、德语、法语、中文及40 多种其他语言!

用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...


Office Tab 为 Office 带来标签式界面,让你的工作更加轻松

  • 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
  • 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
  • 办公效率提升50%,每天帮你减少上百次鼠标点击!