excel將一個工作表根據條件拆分成多個工作表,並將多個工作表怎麼拆分成獨立表格

目錄

一、原始數據表如下(sheet頁名稱爲:數據源),需要根據B列人員所屬組織拆分成每個組織一個工作表。

二、進入VBE編輯頁面

三、插入一個新的模塊。

四、在模塊1窗口粘入如下代碼 ,並保存

五、通過【開發者工具】,插入窗口按鈕

 六、點擊【按鈕】,選擇第一行,繼續選擇【組織】單元格即可

七、在第四部粘貼代碼進去後,直接點擊​ 運行也可以,按提示選擇行和單元格,效果一樣。

 八、將多個sheet表拆分爲獨立表格


 

一、原始數據表如下(sheet頁名稱爲:數據源),需要根據B列人員所屬組織拆分成每個組織一個工作表。

 二、進入VBE編輯頁面

  1. 通過【開發工具】>>【查看代碼】進入編輯頁面
  2. 通過【右擊】sheet頁名稱,選擇【查看代碼】進入編輯頁面
  3. 通過ALT+F11進入編輯頁

 

三、插入一個新的模塊。

四、在模塊1窗口粘入如下代碼 ,並保存

Sub CFGZB()
    Dim myRange As Variant
    Dim myArray
    Dim titleRange As Range
    Dim title As Variant
    Dim columnNum As Integer
    myRange = Application.InputBox(prompt:="請選擇標題行:", Type:=8)
    myArray = WorksheetFunction.Transpose(myRange)
    Set titleRange = Application.InputBox(prompt:="請選擇拆分的表頭,必須是第一行,且爲一個單元格,如:“組織”", 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
          
        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")
        conn.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
        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
End Sub

五、通過【開發者工具】,插入窗口按鈕

 六、點擊【按鈕】,選擇第一行,繼續選擇【組織】單元格即可

 

七、在第四部粘貼代碼進去後,直接點擊 運行也可以,按提示選擇行和單元格,效果一樣。

 八、將多個sheet表拆分爲獨立表格

  1. 如果要將已經拆分爲多個sheet頁的excel表格中的sheet頁拆分爲多個獨立的表格,只需要在編輯其中新增模塊,粘貼如下代碼並執行,等待片刻即可
Private Sub 分拆工作表()
Dim sht As Worksheet
Dim MyBook As Workbook
Set MyBook = ActiveWorkbook
For Each sht In MyBook.Sheets
sht.Copy
ActiveWorkbook.SaveAs Filename:=MyBook.Path & "\" & sht.Name, FileFormat:=xlNormal '將工作簿另存爲EXCEL默認格式
ActiveWorkbook.Close
Next
MsgBox "文件已經被分拆完畢!"
End Sub

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章