情景:對(duì)一個(gè)多類別總數(shù)據(jù)文件煤墙,按類別分隔成多個(gè)文件记盒。
如下圖有ABC三個(gè)類別的Excel文件掷豺,將分成ABC三個(gè)文件龄毡。
image.png
操作流程如下
新建一個(gè)宏
image.png
代碼復(fù)制粘貼想诅,保存召庞,關(guān)閉岛心。
image.png
回到原Excel文檔界面,或者重新打開(kāi)文件,選擇啟用宏(若提示要如此操作)篮灼。
image.png
image.png
image.png
image.png
完成忘古!結(jié)果如下
image.png
代碼如下
Sub 按類別分隔多個(gè)文件()
Dim arr, d As Object, k, t, i&, lc%, rng As Range, c%
c = Application.InputBox("請(qǐng)輸入拆分列號(hào):", , 4) '默認(rèn)選擇第三列,可修改
If c = 0 Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
arr = [a1].CurrentRegion
lc = UBound(arr, 2)
Set rng = [a1].Resize(, lc)
Set d = CreateObject("scripting.dictionary")
For i = 2 To UBound(arr)
If Not d.Exists(arr(i, c)) Then
Set d(arr(i, c)) = Cells(i, 1).Resize(1, lc)
Else
Set d(arr(i, c)) = Union(d(arr(i, c)), Cells(i, 1).Resize(1, lc))
End If
Next
k = d.Keys
t = d.Items
For i = 0 To d.Count - 1
With Workbooks.Add(xlWBATWorksheet)
rng.Copy .Sheets(1).[a1]
t(i).Copy .Sheets(1).[a2]
.SaveAs Filename:=ThisWorkbook.Path & "\" & k(i) & ".xlsx"
.Close
End With
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "完畢"
End Sub
簡(jiǎn)書(shū)文尾圖.jpg
--by Affandi ⊙▽⊙