KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在 Excel 中將大型資料表拆分為多個小型資料表?

作者曉陽修改日期

若您擁有一個包含多個欄位及數百甚至數千列的大型 Excel 表格,或許會希望將其拆分為更易管理的小型資料表。例如,您可能需要根據特定欄位的值來分離資料,或將資料分割成固定列數的區塊。本教學提供清晰的逐步操作指引,助您高效完成這項任務。

主資料表 依欄位值將資料表分割為多個資料表依列數將資料表分割為多個資料表
Excel 中分割前大型表格的螢幕截圖箭頭Excel 表格依欄位值分割後的螢幕截圖Excel 表格依列數分割後的螢幕截圖

使用 VBA 程式碼依欄位值將大型資料表分割為多個資料表

使用 VBA 程式碼依特定列數將大型資料表分割為多個資料表

使用 Kutools for Excel 依欄位值或列數將大型資料表分割為多個資料表


使用 VBA 程式碼依欄位值將大型資料表分割為多個資料表

若要根據指定欄位的值將此大型資料表分割為多個資料表,下列 VBA 程式碼可助您輕鬆達成。請依照以下步驟操作:

1. 按住「Alt」+「F11」鍵,即可開啟「Microsoft Visual Basic for Applications」視窗。

2. 點選「插入」>「模組」,並將下列程式碼貼上至「模組」視窗中。

VBA 程式碼:依關鍵列將大型資料表分割為多個資料表:

Sub Splitdatabycol()
'by Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3. 貼上程式碼後,按下「F5」鍵執行,此時將彈出提示方塊,請選擇資料中的標題列,參見截圖:

顯示如何選取標題列以分割表格的螢幕截圖

4. 接著點選「確定」,系統將彈出另一個對話方塊,請選擇您欲據以分割資料表的欄位資料,參見截圖:

顯示如何選取用於依欄位值分割表格之欄位的螢幕截圖

5. 點選「確定」後,大型資料表會依據欄位值自動分割為多個工作表,並置於主工作表之後,且每個新工作表皆以對應的欄位值命名。參見截圖:

依欄位值分割後建立多個工作表的螢幕截圖


使用 VBA 程式碼依特定列數將大型資料表分割為多個資料表

若您需要根據列數將資料表分割成多個資料表,以下 VBA 程式碼可助您一臂之力。

1. 同時按下「Alt」+「F11」鍵,即可開啟「Microsoft Visual Basic for Applications」視窗。

2. 點選「插入」>「模組」,並將下列程式碼貼上至「模組」視窗中。

VBA 程式碼:依列數將大型資料表分割為多個資料表:

Sub Splitdatabyrows()
'Updated by Extendoffice 
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub
SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub
Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1
Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (xIER - xRow.Row + 1) < SplitRow Then
        resizeCount = (xIER - xRow.Row + 1)
    End If
    xRow.Resize(resizeCount).Copy
    Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
    If xIER > (xRow.Row + SplitRow - 1) Then
        xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
    ElseIf xIER = xRow.Row Then
        xWs.Name = xRow.Row
    Else
        xWs.Name = xRow.Row & " - " & xIER
    End If
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xNTRg = Application.ActiveSheet.Range("A1")
    xTRg.Copy
    xNTRg.Insert
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

3. 接著按下「F5」鍵,在彈出的對話方塊中選取標題列,詳見截圖:

顯示如何選取標題列以依列數分割的螢幕截圖

4. 然後點選「確定」;在第二個提示方塊中,選取您要依據列數進行分割的資料區域,參見截圖:

顯示如何選取資料範圍以依列數分割的螢幕截圖

5. 接著點選「確定」按鈕,並在第三個提示方塊中輸入您希望用來分割的列數,參見截圖:

顯示如何在 Excel 中輸入分割列數的螢幕截圖

6. 接著點選「確定」按鈕,主資料表便會依照列數自動分割為多個工作表,如下方截圖所示:

依列數分割後建立多個工作表的螢幕截圖


使用 Kutools for Excel 依欄位值或列數將大型資料表分割為多個資料表

上述程式碼對多數使用者來說可能較為複雜,因此我將介紹一項強大功能——「Kutools for Excel」的「分割數據」。透過此工具,您能快速又輕鬆地根據關鍵欄位或指定列數,將大型資料表拆分為多個獨立工作表。

Kutools for Excel 提供超過 300 項進階功能,簡化複雜作業,提升創造力與效率。整合 AI 功能,Kutools 能精準自動化各項任務,讓資料管理輕鬆無負擔。Kutools for Excel 的詳細資訊……         免費試用……

1. 選取您要分割的數據範圍,然後點選「KUTOOLS PLUS」>「分割數據」,如截圖所示:

2. 在「分割數據至多個工作表」對話方塊中,根據您的需求指定相關設定:

(1.) 從「分割依據」區段中,依需求選取「指定列」或「固定值」;

(2.) 從「規則」下拉清單中指定工作表名稱,並可選擇為名稱添加「前置字元」或「後置字元」。

使用 Kutools 分割資料之設定的螢幕截圖

3. 接著點選「確定」按鈕,大型資料表便會立即分割為多個小型資料表,並儲存至全新的工作簿中。參見截圖:

依欄位值將資料表分割為多個資料表依列數將資料表分割為多個資料表
使用 Kutools 將 Excel 表格依欄位值分割至多個工作表的螢幕截圖使用 Kutools 將 Excel 表格依列數分割至多個工作表的螢幕截圖

Kutools for Excel-透過超過 300 項必備工具全面強化 Excel,讓您的工作更快速、更輕鬆,並運用 AI 功能實現更聰明的資料處理與高效生產力!立即取得


更多相關文章:

  • 在 Excel 中將活頁簿分割為獨立的 Excel 文件
  • 您或許需要將大型活頁簿拆分為多個獨立的 Excel 檔案,並將其中每個工作表分別儲存為單獨的 Excel 檔案。例如,可將一個活頁簿分割成多份獨立檔案,再依需求交付給不同人員處理,讓每位使用者僅接觸專屬資料,同時有效保障資料安全。本文將介紹如何依據各工作表,將大型活頁簿拆分為獨立的 Excel 檔案。
  • 在 Excel 中將全名分割為第一欄與姓氏
  • 假設您有一份如第一張截圖所示的單欄姓名名冊,現在需要將全名拆分為名字、中間名與姓氏三個欄位,如後續截圖所示。以下提供幾種巧妙的方法,協助您輕鬆解決此問題。
  • 在 Excel 中將長欄分割為多欄
  • 當您在 Excel 中面對一筆冗長的欄位資料時,檢視起來往往相當不便;若能將這類長清單巧妙分割為多欄顯示,將大幅提升瀏覽的便利性與效率。

最佳 Office 生產力工具

🤖KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行     產生程式碼  建立自訂公式    分析資料並產生圖表  呼叫增強函數……
熱門功能尋找、醒目提示或標記重複值     刪除空白行     合併列或儲存格而不遺失資料     不使用公式的四捨五入……
高級 LOOKUP多重條件 VLookup    多重數值 VLookup     跨多個工作表 VLookup      模糊查找……
高級下拉列表快速建立下拉式清單     相依式下拉式清單     多選下拉式清單……
欄位管理員新增指定數量的欄位移動欄位切換隱藏欄位的可見狀態比較範圍與欄位……
精選功能網格聚焦     設計視圖   增強編輯欄    工作簿與工作表管理員     資源庫(自動文字)  日期提取     合併工作表    加密/解密儲存格    依清單傳送電子郵件     超級篩選      特殊篩選(篩選粗體儲存格/斜體/刪除線……) ......
頂尖 15 工具組12 文字工具添加文本刪除特定字符,……)   50+ 圖表 類型甘特圖,……)   40+ 實用公式基於生日計算年齡,……)   19 插入工具插入二維碼從路徑插入圖片,……)   12 轉換工具金額轉大寫匯率轉換,……)   7 合併和拆分工具高級合併行分割儲存格,……)……以及更多
在您的慣用語言中使用 Kutools—支援英文、西班牙文、德文、法文、中文及另外 40+ 種語言!

運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……


Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!

  • 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
  • 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
  • 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!

所有 Kutools 增益集,一個安裝程式

Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!

ExcelWordOutlookTabsPowerPoint
  • 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
  • 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
  • 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
  • 30 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用