Skip to main content

Kutools for Office — 一套工具,五種功能。完成更多工作。

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

Author Siluvia Last modified

在數據管理或報告任務中,有時您可能需要將表格中的每個記錄分離到其單獨的工作表中。例如,如果您在 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 助手:以智能執行為基礎,革新數據分析 生成程式碼 創建自訂公式 分析數據並生成圖表 調用 Kutools 增強函數
熱門功能查找、選取項目的背景色或標記重複值刪除空行合併列或單元格且不遺失數據四捨五入(免公式)...
高級 LOOKUP多條件 VLookup多值 VLookup多表查找模糊查找...
高級下拉列表快速創建下拉列表 依賴型下拉列表 多選下拉列表...
列管理器添加指定數量的列移動列切換隱藏列的顯示狀態比較區域及列...
精選功能網格聚焦 設計檢視 增強編輯欄 工作簿及工作表管理器 資源庫(快捷文本) 日期提取器 合併資料 加密/解密儲存格 按列表發送電子郵件 超級篩選 特殊篩選(篩選粗體/傾斜/刪除線...)...
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%,每日可幫您減少數百次鼠標點擊!

所有 Kutools 外掛,一次安裝

Kutools for Office 套裝整合了 Excel、Word、Outlook 和 PowerPoint 的外掛,外加 Office Tab Pro,非常適合需要跨 Office 應用程式協同作業的團隊。

Excel Word Outlook Tabs PowerPoint
  • 全合一套裝 — Excel、Word、Outlook及 PowerPoint 外掛 + Office Tab Pro
  • 一鍵安裝,一份授權 — 幾分鐘完成設置(支援 MSI)
  • 協同運作更順暢 — Office 應用間無縫提升生產力
  • 30 天全功能試用 — 無需註冊、無需信用卡
  • 最超值 — 一次購買,節省單獨外掛費用