目錄
一、原始數據表如下(sheet頁名稱爲:數據源),需要根據B列人員所屬組織拆分成每個組織一個工作表。
七、在第四部粘貼代碼進去後,直接點擊 運行也可以,按提示選擇行和單元格,效果一樣。
一、原始數據表如下(sheet頁名稱爲:數據源),需要根據B列人員所屬組織拆分成每個組織一個工作表。
二、進入VBE編輯頁面
- 通過【開發工具】>>【查看代碼】進入編輯頁面
- 通過【右擊】sheet頁名稱,選擇【查看代碼】進入編輯頁面
- 通過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表拆分爲獨立表格
- 如果要將已經拆分爲多個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