|
|
- Sub ykcbf() '// 2025.6.27 总表拆分为多工作簿
- Dim d As Object
- Dim p As String
- Dim ws As Workbook
- Dim sh As Worksheet
- Dim arr As Variant
- Dim bt As Long, col As Long
- Dim i As Long
- Dim s As String
- Dim k As Variant
- Dim wb As Workbook
- Dim tm As Double
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- Set d = CreateObject("Scripting.Dictionary")
- p = ThisWorkbook.Path & ""
- Set ws = ThisWorkbook
- tm = Timer
- On Error GoTo ErrorHandler
- Set sh = ws.ActiveSheet
- arr = sh.UsedRange.Value
- bt = 1
- col = 2
- For i = bt + 1 To UBound(arr, 1)
- s = arr(i, col)
- If Len(s) = 0 Then Exit For
- d(s) = 1
- Next i
- For Each k In d.Keys
- sh.Copy
- Set wb = Workbooks(Workbooks.Count)
- With wb.Sheets(1)
- .Name = k
- .DrawingObjects.Delete
- .AutoFilterMode = False
- .Rows(bt).AutoFilter Field:=col, Criteria1:="<>" & k
- .UsedRange.Offset(bt).EntireRow.Delete
- .AutoFilterMode = False
- End With
- wb.SaveAs p & k & ".xlsx", FileFormat:=xlOpenXMLWorkbook
- wb.Close SaveChanges:=False
- Next k
- CleanUp:
- Set d = Nothing
- Application.ScreenUpdating = True
- Application.DisplayAlerts = True
- MsgBox "共用时:" & Format(Timer - tm, "0.000") & "秒!"
- Exit Sub
- ErrorHandler:
- MsgBox "发生错误: " & Err.Description
- Resume CleanUp
- End Sub
复制代码
|
|