|
楼主 |
发表于 2017-4-23 21:50
|
显示全部楼层
果然是高手,
Sub test()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim d, Arr, sht As Worksheet, r, k, i, lr
Set d = CreateObject("scripting.dictionary")
Arr = Worksheets("总表").[a1].CurrentRegion
For Each sht In Sheets
If sht.Name <> "总表" Then sht.Delete '删除旧表
Next
For r = 2 To UBound(Arr)
d(Arr(r, 2)) = "" '得到表名
Next
k = d.keys
For i = 0 To UBound(k)
With ActiveWorkbook.Worksheets.Add(, after:=ActiveSheet) '建表
.Name = k(i) '表名
.[a1].Resize(1, UBound(Arr, 2)) = Application.Index(Arr, 1, 0) '表标题行
End With
Next
For r = 2 To UBound(Arr)
With Worksheets(Arr(r, 2)) '相应表
lr = .Cells(Rows.Count, 1).End(xlUp).Row + 1 '相应表A列非空单元格行号+1
.Range("a" & lr).Resize(1, UBound(Arr, 2)) = Application.Index(Arr, r, 0) '相应位置写入
End With
Next
Sheet1.Activate
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
|
|