|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
前面的班级考场分布已写好,后面的也差不多,你自己改下吧
Sub test()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim rng As Range
Dim n, arr, brr, crr, i, j
n = Sheet1.Cells(Rows.Count, 1).End(3).Row
arr = Sheet1.Range("A1:C" & n)
brr = Sheet1.Range("Z1:Z" & n)
ReDim crr(1 To UBound(arr), 1 To UBound(arr, 2) + UBound(brr, 2))
For i = 1 To UBound(arr)
For j = 1 To UBound(arr, 2)
crr(i, j) = arr(i, j)
Next
For j = 1 To UBound(brr, 2)
crr(i, j + UBound(arr, 2)) = brr(i, j)
Next
Next
With Worksheets.Add(before:=Sheet1)
.Name = "99999"
.Visible = -1
.Range("a1").Resize(UBound(crr, 1), UBound(crr, 2)) = crr
Set rng = .UsedRange
End With
Dim cl%, key, Keys, It
Dim dic
Set dic = CreateObject("scripting.dictionary")
Dim r1 As Range, r2 As Range
arr = rng
cl = UBound(arr, 2)
For i = 2 To UBound(arr, 1)
key = arr(i, 1)
Set r1 = rng.Cells(i, 1).Resize(1, cl)
If Not dic.exists(key) Then
Set dic(key) = r1
Else
Set dic(key) = Union(dic(key), r1)
End If
Next
Set r2 = rng.Cells(1, 1).Resize(1, cl)
Keys = dic.Keys
It = dic.items
For i = 0 To dic.Count - 1
With Worksheets.Add(after:=Sheets(Sheets.Count))
.Name = Keys(i)
r2.Copy .Cells(1, 1)
It(i).Copy .Cells(2, 1)
End With
Next
Worksheets("99999").Delete
Set dic = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
|
|