Skip to main content

如何在 Excel 中為每一行創建新工作表?

Author: Siluvia Last Modified: 2025-08-06

在數據管理或報告任務中,有時您可能需要將表格中的每個記錄分離到其單獨的工作表中。例如,如果您在 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 視窗中,點擊 Insert > Module 以添加新的程式碼模塊。然後將以下程式碼複製並粘貼到模塊視窗中。

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 鍵或點擊 Run 執行程式碼。新工作表將在當前工作簿的所有現有工作表之後創建,每個工作表的名稱將根據所選的唯一列值命名。請參閱下面的截圖以查看示例結果:

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). 如果您希望每張工作表以其該列中的值命名,請從「規則」下拉菜單中選擇「列的值」。
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 Aide:徹底革新數據分析,基於智能執行|生成程式碼|創建自訂公式|分析數據並生成圖表|調用 Kutools Functions
熱門功能查找、選取項目的背景色或標記重複值 | 刪除空行 | 合併列或單元格且不丟失資料 | 四捨五入...
高級 LOOKUP多條件查找|多值查找|多表查找|模糊查找...
高級下拉列表快速創建下拉列表 | 關聯下拉列表 | 多選下拉列表 ...
列管理器添加指定數量的列 | 移動列 | 切換隱藏列的可見狀態 | 區域與列比較 ...
精選功能網格聚焦 | 設計檢視 | 增強編輯欄 | 工作簿及工作表管理器 | 資源庫 (自動文本) | 日期提取器 | 合併資料 | 加密/解密儲存格 | 按清單發送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體/傾斜/刪除線 ...)...
前15 大工具集12 款文本工具添加文本刪除特定字符,...)|50+ 種圖表 類型甘特圖,...)|40+ 實用 公式基於生日計算年齡,...)|19 款插入工具插入QR码按路徑插入圖片,...)|12 款轉換工具金額轉大寫匯率轉換,...)|7 款合併和分割工具高級合併行分割儲存格,...)| ...以及更多
使用 Kutools 支援你的語言——支援英語、西班牙語、德語、法語、中文及40 多種語言!

利用 Kutools for Excel 大幅提升你的 Excel 技能,感受前所未有的高效體驗。 Kutools for Excel 提供超過300 項高級功能,助你提升效率並保存時間。 點此查看你最需要的功能...


Office Tab 為 Office 帶來標籤式介面,讓你的工作更加輕鬆

  • 啟用 Word、Excel、PowerPoint 的標籤式編輯和閱讀功能
  • 在同一個視窗的標籤中打開和創建多個文件,而不是在新窗口中分開開啟。
  • 可提升你50% 的工作效率,每天為你大量減少滑鼠點擊次數!