|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
- Sub test1()
- Dim data, rowHeights() As Double, dict As Object
- Dim i As Long, j As Long, vKey As Variant
- Dim dstFolder As String, ws As String
- Dim titleRow As Long, splitCol As Long
-
- DoApp False
-
- titleRow = 2
- splitCol = 1
- j = 21
-
- ReDim rowHeights(1 To titleRow + 1)
-
- dstFolder = ThisWorkbook.Path & "\"
-
- Set dict = CreateObject("Scripting.Dictionary")
- With ActiveSheet
- data = .Range("A1").CurrentRegion.Resize(, j).Value
- For i = titleRow + 1 To UBound(data)
- ws = data(i, splitCol)
- If Not dict.Exists(ws) Then Set dict(ws) = .Range("A1").Resize(titleRow, j)
- Set dict(ws) = Union(dict(ws), .Range("A" & i).Resize(, j))
- Next
- For j = 1 To UBound(data, 2)
- data(1, j) = .Columns(j).ColumnWidth
- Next
- For i = 1 To UBound(rowHeights)
- rowHeights(i) = .Rows(i).RowHeight
- Next
- End With
-
- j = 0
- Application.SheetsInNewWorkbook = dict.Count
- With Workbooks.Add
- For Each vKey In dict.Keys
- j = j + 1
- With .Worksheets(j)
- dict(vKey).Copy .Range("A1")
- .Name = vKey
- For i = 1 To UBound(data, 2)
- .Columns(i).ColumnWidth = data(1, i)
- Next
- For i = 1 To UBound(rowHeights) - 1
- .Rows(i).RowHeight = rowHeights(i)
- Next
- .Rows(i & ":" & .UsedRange.Rows.Count).RowHeight = rowHeights(i)
- .DrawingObjects.Delete
- End With
- Next
- .SaveAs dstFolder & Split(ThisWorkbook.Name, ".xls")(0) & "-拆分副本", 51
- .Close
- End With
- 'Next
-
- With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
- .SetText ""
- .PutInClipboard
- End With
-
- Set dict = Nothing
- Application.SheetsInNewWorkbook = 1
- DoApp
- Beep
- End Sub
- Function DoApp(Optional b As Boolean = True)
- With Application
- .ScreenUpdating = b
- .DisplayAlerts = b
- .Calculation = -b * 30 - 4135
- End With
- End Function
复制代码 |
|