【VBA实战系列】004-新思路,一次循环解决按字段拆分问题



'功能:按字段拆分到工作表
'日期:2020年4月5日
'作者:Excel办公实战-小易
Sub SplitDataToSht()
Dim d As Object
Set d = CreateObject("scripting.dictionary")
'获取要拆分的数据源
Dim arr
arr = Sheet1.Range("a1").CurrentRegion.Value
'字典+Union 一次循环分组
Dim i As Long, curRang As Range, titleRng As Range
For i = 2 To UBound(arr)
'当前行数据
Set curRang = Sheet1.Cells(i, 1).Resize(1, UBound(arr, 2))
If Not d.exists(arr(i, 1)) Then
Set titleRng = Sheet1.Cells(1, 1).Resize(1, UBound(arr, 2))
'首次把标题行及对应数据加入
Set d(arr(i, 1)) = Union(titleRng, curRang)
Else
'否则,把当前和前面满足条件的拼接起来
Set d(arr(i, 1)) = Union(d(arr(i, 1)), curRang)
End If
Next
'创建工作表并写入数据
For i = 1 To d.Count
Sheets.Add after:=Sheets(Sheets.Count)
With ActiveSheet
.Name = d.keys()(i - 1)
d.items()(i - 1).Copy .Range("a1")
End With
Next
MsgBox "拆分完成!共" & d.Count & "个大类"
End Sub
赞 (0)