如图,这边需要按照工作内容拆分多个工作表,直接上代码:
Sub splitSht()
Dim sht As Worksheet
Dim d As Object
Dim j As Integer
Set sht = ThisWorkbook.Worksheets("Sheet1")
Set d = CreateObject("scripting.dictionary")
With sht
rrow = .Range("A65535").End(xlUp).Row
For i = 2 To rrow
strr = .Range("E" & i).Value
If Not d.exists(strr) Then
d.Add strr, .Range("A1").Resize(1, 7)
Set d.Item(strr) = Union(d.Item(strr), .Range("A" & i).Resize(1, 7))
Else
Set d.Item(strr) = Union(d.Item(strr), .Range("A" & i).Resize(1, 7))
End If
Next
k = d.keys
i = d.items
For j = 0 To d.Count - 1
ThisWorkbook.Worksheets.Add after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = k(j)
i(j).Copy Worksheets(k(j)).Range("A1")
Worksheets(k(j)).Cells.EntireColumn.AutoFit
Next
End With
End Sub
因为字典具有唯一key 的属性, 通过字典记录所有key 和用union获取所有值,开始的d.Add strr....是用于记录表的标题,然后通过 value.copy把值输出到每个信标中。