|
- Sub Macro1()
- Dim arr, brr(1 To 10000, 1 To 5), d, i&, s&, zf$
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- Set d = CreateObject("scripting.dictionary")
- arr = Sheet1.Range("a1").CurrentRegion
- For i = 2 To UBound(arr)
- If Not d.exists(arr(i, 2)) Then
- s = s + 1
- d(arr(i, 2)) = s
- brr(s, 1) = arr(i, 3)
- brr(s, 2) = 1
- brr(s, 3) = arr(i, 6)
- brr(s, 4) = arr(i, 7)
- brr(s, 5) = arr(i, 8)
- Else
- brr(d(arr(i, 2)), 2) = brr(d(arr(i, 2)), 2) + 1
- brr(d(arr(i, 2)), 3) = brr(d(arr(i, 2)), 3) + arr(i, 6)
- brr(d(arr(i, 2)), 4) = brr(d(arr(i, 2)), 4) + arr(i, 7)
- brr(d(arr(i, 2)), 5) = brr(d(arr(i, 2)), 5) + arr(i, 8)
- End If
- Next
- a = d.keys: b = d.items
- With Sheets("模板")
- For i = 0 To d.Count - 1
- .[b5] = a(i)
- .[b6] = brr(b(i), 1)
- .[d12] = brr(b(i), 2)
- .[d13] = brr(b(i), 3)
- .[d14] = brr(b(i), 4)
- .[d15] = brr(b(i), 5)
- zf = a(i) & "单位汇总表.xls"
- .Copy
- ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "" & zf
- Workbooks(zf).Close 1
- Next
- End With
- Application.DisplayAlerts = True
- Application.ScreenUpdating = True
- End Sub
复制代码 简化一下代码,去掉几个字典,直接复制工作表
|
|