Excel小技巧:使用VBA,10秒鐘搞定拆分工作表(內附代碼)

2021-01-10 雲淡風輕微課堂

前面我們發布過將多個工作簿中的工作表合併到一個工作表簿中,就有網友提了一個問題,如何講一個工作表拆分成多個工作表,其實實現的方法很多,如果數據少的話,我們直接採用篩選後複製粘貼就可以了,如果數據比較多,或者是日常工作的話,每天這樣複製粘貼,就很麻煩~,或者我們使用透視表也可以。。

1

素材文件

我們的素材文件是以某公司為例,數據記錄了公司旗下有7家店鋪,從2016年1月1日到2018年12月31日,每天銷售的流水數據。

存放數據的工作表名稱已修改為「數據源」,工作表的第一行為標題行,一共有2195行數據。

現在我們想按照店鋪名稱,將整個工作表拆分開。

2

操作步驟

打開我們的工作表文件以後,將需要拆分的工作表名字修改成「數據源」。然後按鍵盤上面的Alt+F11,彈出VBA編輯的窗口,將代碼粘貼進代碼編輯器中(代碼見最後附件);

重要的事情重複一次,因為我們代碼裡面,要拆分的工作表名稱叫"數據源",所以你直接把你要拆分的工作表名稱修改成「數據源」才能正常運行。

3

運行程序

在VBA編輯器中,點擊示例中的綠色三角(見上圖),或者是按鍵盤上面的F5都可以。

此時會讓我們選擇標題行,我們通過滑鼠點擊標記標題行(第1行)就可以了;

接下來會讓我們選擇,需要按照哪個欄位拆分,我們就選擇門店名稱(B1)單元格,然後直接點確定。

這個時候程序就會自動運行,滑鼠會閃動,我們需要等一下,運行的時間就和你電腦的配置以及要拆分文件的大小有關,以我們的素材為例,大概需要10秒鐘,就可以搞定,然後會彈出一個提示完成的消息框,我們點確定就可以。

回到我們的文件裡面,可以看到程序已經給我們拆分好了,是不是覺得很方便呢?

附程序代碼(程序在Win7+Excel 2016 運行可行):

視頻演示,稍後發布在網易雲課堂中

Sub 按照指定欄位拆分工作表()

'本程序來源於網絡,原作者不詳,特留此句對原作者表示感謝;

'本程序中,雲淡風輕微課堂(公眾號:word_excel_ppt)進行了部分修改,適用性更廣

Dim myRange As Variant

Dim myArray

Dim titleRange As Range

Dim title As String

Dim columnNum As Integer

myRange = Application.InputBox(prompt:="請用滑鼠點擊標題行:", Type:=8)

myArray = WorksheetFunction.Transpose(myRange)

Set titleRange = Application.InputBox(prompt:="請用滑鼠點擊要拆分的欄位,必須是第一行,且為1個單元格", Type:=8)

title = titleRange.Value

columnNum = titleRange.Column

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Dim i&, Myr&, Arr, num&

Dim d, k

For i = Sheets.Count To 1 Step -1

If Sheets(i).Name <> "數據源" Then

Sheets(i).Delete

End If

Next i

Set d = CreateObject("Scripting.Dictionary")

Myr = Worksheets("數據源").UsedRange.Rows.Count

Arr = Worksheets("數據源").Range(Cells(2, columnNum), Cells(Myr, columnNum))

For i = 1 To UBound(Arr)

d(Arr(i, 1)) = ""

Next

k = d.keys

For i = 0 To UBound(k)

Set conn = CreateObject("adodb.connection")

Select Case Application.Version * 1 '設置連接字符串,根據版本創建連接

Case Is <= 11

conn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & ThisWorkbook.FullName

Case Is >= 12

conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"""

End Select

Sql = "select * from [數據源$] where " & title & " = '" & k(i) & "'"

Worksheets.Add after:=Sheets(Sheets.Count)

With ActiveSheet

.Name = k(i)

For num = 1 To UBound(myArray)

.Cells(1, num) = myArray(num, 1)

Next num

.Range("A2").CopyFromRecordset conn.Execute(Sql)

End With

Sheets(1).Select

Sheets(1).Cells.Select

Selection.Copy

Worksheets(Sheets.Count).Activate

ActiveSheet.Cells.Select

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False

Next i

conn.Close

Set conn = Nothing

Application.DisplayAlerts = True

Application.ScreenUpdating = True

MsgBox " 已經拆分完成" & vbCrLf & vbCrLf & "公眾號:word_excel_ppt", vbInformation, "雲淡風輕微課堂"

End Sub

相關焦點

  • Microsoft Excel怎麼按條件快速將總表數據拆分成多個工作表?
    在使用Microsoft Excel統計數據時,一般情況下會將各類數據匯總到一個工作表中。當需要分類數據時,使用【篩選】功能的話重複性操作太多,還需要將篩選後的數據進行複製粘貼,有什麼辦法能夠按條件快速的將總表數據拆分成多個工作表?這個時候就需要用到強大的Visual Basic for Applications(VBA)了。
  • 用excel製作文件管理器,所有版本皆可使用
    Hello,大家好,之前跟大家分享了使用excel中的power query功能製作一個文件管理器,但是很多分析反應自己的excel版本不夠高,無法使用,今天就跟大家分享如何使用宏表函數製作文件管理器,他也是可以實現文件刷新的,這個的操作也不難,下面就讓我們來看下他是如何設置的一、什麼是宏表函數以及FILES函數宏表函數是早期低版本excel的產物
  • VBA代碼解決方案第49講:VBA代碼中工作表函數SUM的利用方法 - VBA...
    大家好,我們今日繼續講解VBA代碼解決方案的第49講內容(註:在整理之前的VBA系列文章中合併了一些文章,重新成集排序為第49講,所以從這篇文章開始以新的排序計算):VBA中SUM函數的利用方法。在對工作表的單元格區域進行求和計算時,使用工作表Sum函數比使用VBA代碼遍歷單元格進行累加求和效率要高得多,我們在熟悉了基本的代碼規則後,就要把重點放在優化程序上,這點非常重要,在一般的簡單運算中或許體會的不是很深,在資料庫的操作中這點非常的明顯。SUM函數就是優化程序的一個方法。我們看下面的代碼。
  • Excel VBA:匯總多個工作簿每個工作表名稱包含指定關鍵詞的數據
    今天再分享下匯總指定文件夾下每個工作簿中工作表名稱包含某個指定關鍵詞的小代碼(當不指定關鍵詞時,則默認匯總所有工作表數據)。舉個慄子。假設有一文件夾,內有十幾個工作簿,每個工作簿又各有多個不等數量的工作表,現在我們只想匯總每個工作簿中工作表名稱包含「看見星光」的數據,那就可以使用我們今天分享的小代碼了。
  • 宏如何使用?--excel的學習
    如果你已經用excel很長時間了,那麼您一定聽過宏這個名稱,很多人都不知道宏是用來幹什麼的,今天我們就來了解一下excel中宏的作用與幫助,如果您經常在excel中重複一個任務,那就可以用宏來自動執行該任務了。
  • excel圖表技巧:如何用VBA製作動態地圖
    我們這些EXCELER操作的是EXCEL,操作的是數據;手裡沒有數據談何「技巧」的發揮,而在作者的認知中,一直覺得,數據源整理也應該算是學習EXCEL的基礎之一。 數據來源:今日頭條「抗擊肺炎」專題版塊然後按下面的結構處理數據,便於我們代碼的引用。
  • Excel按量分配太複雜!關鍵數據不便共享!用VBA拆分為獨立工作薄
    ,雖然看起來很好看,但是等到了數據處理,數據分析的時候,表頭反而成為了硬傷然後輸入我們要拆分的行數,這裡可以隨意輸入,比方說你有100個數據,你有4個人可以協助你,那就是按照25行進行拆分,當然你可以任性,隨意輸入一個數據20,都可以,不影響結果的,這裡我隨機輸入15看看結果怎麼樣
  • 工作中為什麼有必要學點VBA
    從office97開始,VBA作為MS的標準內置配置,彌補了excel內在的基本函數不足以支持的複雜計算,提供了一種相對輕量級的、所見即所得的解決方案,濤哥在21世紀初因內部工作需要(統計代碼行數記工作量)第一次接觸了VBA,並在以後的工作中多次出色的完成相關任務,甚至給濤嫂編的幾個小程序大大提升了她們的工作效率,還受到了時任行長的讚許,現在想來還歷歷在目。
  • VBA數組與字典解決方案第32講:數組的拆分和維數轉換
    大家好,我們今日繼續VBA數組與字典解決方案的講解,今日講解第32講,數組的拆分和維數轉換:一 數組的拆分1. 用Index拆分數組數組的拆分在VBA中是一個難題,如果是按行拆分數組,除了用循環外也只能借用API函數完成了。幸好我們可以借用工作表函數index達到按列拆分數組。
  • excel編程系列基礎:常用語句之循環語句的邏輯理解
    [A1].RowEnd Sub【代碼解析】Line1:將工作表A的A1單元格的ROW屬性,賦值給工作表A的A1單元格。2.給10個單元格賦值下面我們提高一些需求難度,給A1:A10單元格賦值,如果你能看懂上面的代碼,那就非常簡單了,寫10行代碼就是了。
  • VBA數組數據回填工作表
    第三節 VBA數組數據回填工作表在前兩節我們講了如何將工作表中的數據讀到數組中,這種操作的實質其實是:將數據預存到內存中,然後在內存中調取數據再進行下一步操作,這樣可以節約反覆提取數據的時間。當我們在內存中將數據計算完成後,需要將結果數組回填給工作表,又要注意哪些問題呢?對於工作表而言,可以回填的是數組可以是一維或二維的。
  • 辦公室必備的Excel工作表技巧,簡單易學,效率優先!
    在實際的辦公中,經常要對表格數據進行處理,如果自己的Excel工作表技巧不到位,那別人下班,自己就只能加班呢……如果想要提早下班,就要掌握一定量的辦公室必備Excel工作表技巧。一、Excel工作表技巧:批量修改工作表。
  • Jupyter Notebooks嵌入Excel並使用Python替代VBA宏
    該軟體包提供了PyXLL和Jupyter之間的連結,因此我們可以在Excel內使用Jupyter筆記本。  excel sheet 與 Pandas DataFrames 同步  使用魔術函數「%xl_get」來獲取Python中當前的Excel選擇。
  • 使用簡單而強大的Excel來進行數據分析
    這款軟體不僅能夠進行基本的數據計算,還可以使用它來進行數據分析。它被廣泛用於許多的領域內,包括財務建模和業務規劃等。對於數據分析領域的新手來說,Excel它可以成為一個很好的跳板。甚至來說在學習R或Python之前,最好先了解一下Excel。將Excel添加到你的技能庫中沒有什麼壞處。
  • EXCEL之VBA-For Each……Next 語句的使用方法
    End Sub運行結果遍歷數組下面的代碼定義一個NextMsgBox tEnd Sub上面代碼運行結果下面代碼查找當前工作薄共有多少個工作表,其中已經使用的工作表有多少個Sub countusedsheet()ActiveSheet.usedrange.SpecialCells(11).Selecta = Sheets.Count
  • excel技巧:excel快捷鍵你不該只知道複製粘貼,下面這些更實用
    所以小鷹想給大家說的是,當一項技能或技巧你用的熟練且頻繁的時候,它就是你最忠實最高效的夥伴,今天小鷹就給大家說幾個excel中你們之前可能不常用,但是很好用的快捷鍵。那麼讓我們看下同樣的數據和運算,下面這張圖的操作方法:這張圖,幾乎沒動滑鼠,只用了三個組合快捷鍵就搞定了對這些數據求和。
  • Excel辦公技巧,工作表中圖片放大的幾種方法,你一定用得到
    效果預覽方法一:使用批註功能打開一個空白工作表,點擊插入,圖片,找到圖片後,雙擊插入,調整圖片大小,在圖片所在單元格內點擊右鍵,點擊插入批註,刪除批註內的文字。滑鼠移動到批註邊緣變成十字形時,點擊右鍵,設置批註格式,顏色與線條,顏色,填充效果,圖片,選擇圖片,從文件,雙擊剛剛插入的這張圖片,此處不勾選:鎖定圖片縱橫比,連續兩個確定。
  • Excel工作表中的定位功能都不會使用,那就真的Out了!
    一、Excel工作表定位技巧:選定單元格區域。  方法:  選定Excel工作表中的任意單元格區域,快捷鍵Ctrl+G(或F5)打開【定位】對話框,在【引用位置】中輸入單元格區域地址範圍,並【確定】。  二、Excel工作表定位技巧:定位公式。
  • excel表格輕鬆搞定!
    在工作中,有時候會遇到把阿拉伯數字轉轉換為中文簡體,中文繁體,如果數據很多,而且一時找不到轉換的軟體,試試電腦上的excel吧,一個函數即可搞定。方法一:單元格格式。此處轉換用到的函數為numberstring函數,這個函數和常用的時間函數datedif一樣,都是excel中的隱藏函數,運用時在函數編輯欄完整輸入函數即可。numberstring函數有兩個參數,第一個參數為要轉換的單元格,第二個參數有3種,1表示把阿拉伯數字轉化為慣用的中文大寫,2表示把阿拉伯數字轉化為中文繁體字,3表示把阿拉伯數字轉化為對應的中文大寫。