Note: The other languages of the website are Google-translated. Back to English

如何根據Excel中的列將數據拆分為多個工作表?

假設您有一個包含大量數據的工作表,現在,您需要根據以下內容將數據拆分為多個工作表: 姓名 列(請參見下面的屏幕截圖),然後隨機輸入名稱。 也許您可以先對它們進行排序,然後將它們一個一個地複制並粘貼到其他新工作表中。 但這需要您的耐心反复複製和粘貼。 今天,我將討論解決該任務的一些快速技巧。

doc按列1拆分數據

根據列使用VBA代碼將數據拆分為多個工作表

使用Kutools for Excel將數據基於列拆分為多個工作表


根據列使用VBA代碼將數據拆分為多個工作表

如果要基於列值快速自動地拆分數據,則以下VBA代碼是一個不錯的選擇。 請這樣做:

1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

2。 點擊 插入 > 模塊,然後將以下代碼粘貼到“模塊窗口”中。

Sub Splitdatabycol()
'updateby 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
Dim xWS 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
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.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 鍵運行代碼,並彈出提示框,提醒您選擇標題行,請參見屏幕截圖:

doc按列7拆分數據

4。 然後,單擊 OK 按鈕,然後在第二個提示框中,選擇要基於其拆分的列數據,請參見屏幕截圖:

doc按列8拆分數據

5。 然後,點擊 OK,活動工作表中的所有數據均按列值劃分為多個工作表。 拆分工作表使用拆分單元格名稱命名。 看截圖:

doc按列2拆分數據

備註:拆分的工作表放在主工作表所在的工作簿的末尾。


使用Kutools for Excel將數據基於列拆分為多個工作表

作為一個Excel初學者,這種冗長的VBA代碼對我們來說有點困難,而且我們大多數人甚至都不知道如何根據需要修改代碼。 在這裡,我將向您介紹一個多功能工具-Excel的Kutools,其 拆分數據 該實用程序不僅可以幫助您根據列將數據拆分為多個工作表,還可以按行數拆分數據。

備註:要應用此 拆分數據,首先,您應該下載 Excel的Kutools,然後快速輕鬆地應用該功能。

安裝後 Excel的Kutools,請這樣做:

1。 選擇要拆分的數據范圍。

2。 點擊 Kutools 加 > 下載學習單 > 拆分數據,請參見屏幕截圖:

doc按列3拆分數據

3。 在 將數據拆分為多個工作表 對話框,您需要:

1)。 選擇 特定欄 在選項 分割依據 部分,然後在下拉列表中選擇要用於拆分數據的列值。 (如果您的數據包含標題,並且您想將其插入每個新的拆分工作表中,請檢查 我的數據有標題 選項。)

2)。 然後,您可以在 新工作表名稱 部分,從中指定工作表名稱規則 規則 下拉列表中,您可以添加 字首 or 後綴 以及工作表名稱。

3)。 點擊 OK 按鈕。 看截圖:

doc按列4拆分數據

4。 現在,數據被拆分為一個新的工作簿中的多個工作表。

doc按列5拆分數據

點擊下載Kutools for Excel並立即免費試用!


使用Kutools for Excel將數據基於列拆分為多個工作表

Excel的Kutools 包括300多個便捷的Excel工具。 30天免費試用,不受限制。 立即下載免費試用版!


相關文章:

如何按行數將數據拆分為多個工作表?


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (303)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
根據帶有 VBA 代碼的列將數據拆分為多個工作表會顯示一些錯誤。 請嘗試糾正它並更新它。 如果您提供示例 excel 文件,它將非常有幫助。
網站主持人對此評論進行了最小化
嗨,感謝它為我工作的代碼! 我正在嘗試找到一個根據日期將一張主表拆分為多張表的代碼
網站主持人對此評論進行了最小化
那太不可思議了! 這個過程需要我一個多小時才能完成,但它在 30 秒內完成。 這個我將保留在我的 VBA 庫中。 謝謝!
網站主持人對此評論進行了最小化
嗨,我的工作表中有 30000 個單元格,需要在幾個月內將它們拆分。 有沒有我可以用來更快地完成它的代碼。 我有 8 列,日期是 B 列。我一直在玩弄上面給出的代碼,但失敗了。 你能幫我解決這個問題嗎? 提前致謝
網站主持人對此評論進行了最小化
我收到以下錯誤:運行時錯誤“6”溢出調試後顯示行 For i = 2 To Ir 我的 excel 行超過 500,000。 有什麼解決辦法非常感謝你的代碼。 最好的問候樂
網站主持人對此評論進行了最小化
你好,非常感謝你的代碼。 我收到以下錯誤:運行時錯誤“6”溢出 For i = 2 To Ir 任何解決方案。 謝謝
網站主持人對此評論進行了最小化
按 F5 時出現錯誤 - GoTo Box 要求參考?
網站主持人對此評論進行了最小化
VBA 過程完美運行,非常感謝您分享您的專業知識並為我節省了大量時間!
網站主持人對此評論進行了最小化
VBA 代碼運行良好。 隨著對 Sheet1 的更改,它似乎不會更新工作表。 請協助。
網站主持人對此評論進行了最小化
嗨,感謝它為我工作的代碼! 我只有兩個問題/評論。 1 複製的數據不包括原始文件的佈局。 是否可以使用自動過濾器將數據複製為表? 2 複製的數據似乎不受標題範圍的限制。 是否可以調整特定範圍或表名的代碼? 這些調整會很有幫助。 問候,彼得
網站主持人對此評論進行了最小化
奇蹟般有效! 謝謝你。
網站主持人對此評論進行了最小化
像魅力一樣工作...感謝您提供高級代碼... :lol:
網站主持人對此評論進行了最小化
非常感謝,這很好用。 但是,如果我希望每個選項卡中的數據再次排序(使用另一列),會發生什麼? 基本上,這個 VBA 將它分解為選項卡,但我可能希望它進一步分解..這可能嗎?
網站主持人對此評論進行了最小化
嗨喬納森,我知道的舊評論,但將來可能對其他人有幫助:我需要這樣做,但找不到使用 VBA 的簡單方法。 但是,我發現如果您在電子表格中創建一個新列作為 2 的合併,例如 =A1&" "&A2 這將為您提供包含兩組信息的 1 個單元格。 然後你可以運行上面的模塊,它工作正常! 編輯 - 列中的數據需要少於 30 個字符,否則不會復制數據(在模塊上顯示為錯誤),並且您會在新工作表中間獲得一張空白工作表。
網站主持人對此評論進行了最小化
太棒了..這太棒了。 我為這個問題苦苦掙扎了很長時間,這段代碼作為一個喘息的機會出現了。 謝謝分享。
網站主持人對此評論進行了最小化
驚人的。 感謝您發布。
網站主持人對此評論進行了最小化
對於較小的數據(少於 1200 行),該代碼就像一個魅力。 我試圖在更大的工作表上使用(17000 行),但它在分成 10-12 張後就崩潰了。 所以我們嘗試將原始數據拆分為 3 個不同的工作簿,但仍然關閉了我們。 我們有 Windows 7,我們的計算機也沒有那麼慢。 您是否建議任何有限的數據行以安全地使用此代碼? 任何建議將不勝感激。
網站主持人對此評論進行了最小化
對於較小的數據(少於 1200 行),該代碼就像一個魅力。 我試圖在更大的工作表上使用(17000 行),但它在分成 10-12 張後就崩潰了。 所以我們嘗試將原始數據拆分為 3 個不同的工作簿,但仍然關閉了我們。 我們有 Windows 7,我們的計算機也沒有那麼慢。 您是否建議任何有限的數據行以安全地使用此代碼? 任何建議將不勝感激。 我不確定的是:宏可以支持的最大行數是多少? 我可以玩它......它在 20k 和 40k 之間![/quote]
網站主持人對此評論進行了最小化
面臨同樣的問題。 代碼適用於數據行較少的工作表,但是對於較大的數據,它會顯示錯誤,因為“Excel 無法使用可用資源完成此任務。選擇較少的數據或關閉其他應用程序”(沒有任何其他應用程序同時工作)代碼對於較小的數據(少於 1200 行),它就像一個魅力。 我試圖在更大的工作表上使用(17000 行),但它在分成 10-12 張後就崩潰了。 所以我們嘗試將原始數據拆分為 3 個不同的工作簿,但仍然關閉了我們。 我們有 Windows 7,我們的計算機也沒有那麼慢。 您是否建議任何有限的數據行以安全地使用此代碼? 任何建議將不勝感激。
網站主持人對此評論進行了最小化
你是我永遠的英雄! 我已經為此尋找了幾個月沒有運氣。 我必須每週/每月將報告分成 147 多個工作表,他們不會讓我得到 kutools。 在那張紙條上..我真的需要學習編碼。 :(但是謝謝!
網站主持人對此評論進行了最小化
嗨,我有一張有 65000 條記錄和 8 種不同情況的工作表,所以基本上它應該生成 80 個不同的工作表。 我嘗試運行此代碼,但它會引發運行時錯誤 6 溢出。 可以調整此代碼以解決我的問題嗎? 請您的幫助將不勝感激。
網站主持人對此評論進行了最小化
[quote]嗨,我有一張有 65000 條記錄和 8 種不同情況的工作表,所以基本上它應該生成 80 個不同的工作表。 我嘗試運行此代碼,但它會引發運行時錯誤 6 溢出。 可以調整此代碼以解決我的問題嗎? 請您的幫助將不勝感激。由王牌[/quote] 嘗試將 Dim vcol, i As Integer 更改為 Dim vcol, i As Long
網站主持人對此評論進行了最小化
嗨,我嘗試將 DIM vcol 更改為 LOng,它運行良好,但突然出現錯誤,沒有足夠的內存來完成此操作,嘗試使用更少的數據或關閉其他應用程序。 雖然我沒有打開任何其他應用程序。 我有超過 100 k 行和大約。 16 MB 文件大小。 任何幫助將不勝感激。 謝謝穆斯塔法
網站主持人對此評論進行了最小化
很棒的代碼-完美運行(如果您將變量更改為電子表格所需的變量)
網站主持人對此評論進行了最小化
我有一張可變行數的工作表。 其中一列是從 2010 年開始的日期。 其他列是基金名稱,其中包含每個基金相對於日期的資產淨值數據。 所以我不想將列拆分為不同的工作表,我想將每個 FUND NAME 拆分為自己的工作表,其中包含每個月底日期的 NAV 數據,而不是每日日期。 這可以做到還是不可能?
網站主持人對此評論進行了最小化
我有一個我使用的工作表,我正在嘗試找到一個 vba 代碼,它將重新調整帳戶名稱並將特定行複製到具有相同名稱的新工作簿和工作表中你能幫忙嗎?
網站主持人對此評論進行了最小化
偉大的! VBA 代碼正在運行,謝謝! 我需要將這些輸出工作表放在單獨的 excel 文件中而不是工作表中,並且當我拆分為許多工作表時出現錯誤。
網站主持人對此評論進行了最小化
Starscor 和 Tim 如果您想使用行的名稱將文件的工作表拆分為多個文件,那麼在同一個網頁中有一個小的宏代碼可以執行此操作,只需搜索“拆分工作簿以分隔 Excel 文件”即可會找到的。 將該示例的代碼添加到此示例的末尾,刪除重複的 end sub 和 sub 當然,您將獲得一個文件。
網站主持人對此評論進行了最小化
誰能幫助我如何一次對同一工作簿中不同工作表中的列進行排序,並刪除不同工作表中的重複項,因為我在同一個工作簿中有大約 65 個工作表
網站主持人對此評論進行了最小化
這太令人興奮了! 謝謝你。 我已經為此尋找了一段時間。
網站主持人對此評論進行了最小化
太好了-謝謝你分享這個。 甚至將亮點/格式傳播到新的工作表!
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護