- Sub 拆分abc123()
- Dim arr
- Dim wb As Workbook
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- Set d = CreateObject("scripting.dictionary")
- With Worksheets("汇总表")
- r = .Cells(.Rows.Count, 2).End(xlUp).Row
- arr = .Range("a1:f" & r)
- For i = 2 To UBound(arr)
- If Not d.exists(arr(i, 2)) Then
- Set d(arr(i, 2)) = Union(.Cells(1, 1).Resize(1, 6), .Cells(i, 1).Resize(1, 6))
- Else
- Set d(arr(i, 2)) = Union(d(arr(i, 2)), .Cells(i, 1).Resize(1, 6))
- End If
- Next
- End With
- For Each aa In d.keys
- Set wb = Workbooks.Add
- With wb
- With .Worksheets(1)
- d(aa).Copy .Range("a1")
- .Name = aa
- End With
- .SaveAs ThisWorkbook.Path & "\拆分表" & aa
- .Close False
- End With
- Next
- Application.ScreenUpdating = True
- MsgBox "数据拆分完毕!"
- End Sub
代码仅供参考 如果数据有10万左右 运行时间大约5—6分钟 ********************** 1、点击按钮,将汇总表数据拆分到拆分表目录下面的3个工作簿的表中(3个工作簿及里面的表格已经存在,如有内容要清空)
2、要保证复制后的格式不变
3、数据量在10万左右,要保证性能 |
|