Option Explicit Sub 拆分工作表() Application.ScreenUpdating = True Dim br, x As Integer, sh As Worksheet, d As New Dictionary, i As Integer, rg As Range, k As Integer, j As Integer, arr(), l As Integer i = Range("A2").End(xlDown).Row For Each rg In Range("H3:H" & i) d(rg.Value) = "" Next For k = 0 To d.Count - 1 For j = 3 To i If Range("H" & j) = d.Keys(k) Then x = x + 1 ReDim Preserve arr(1 To 12, 1 To x) arr(1, x) = x arr(2, x) = Range("B" & j) arr(3, x) = Range("C" & j) arr(4, x) = Range("D" & j) arr(5, x) = Range("E" & j) arr(6, x) = Range("F" & j) arr(7, x) = Range("G" & j) arr(8, x) = Range("H" & j) arr(9, x) = Range("I" & j) arr(10, x) = Range("J" & j) arr(11, x) = Range("K" & j) arr(12, x) = Range("L" & j) End If Next j Set sh = Sheets.Add(, Sheets(Sheets.Count)) sh.Name = d.Keys(k) sh.Range("a1:l1").Merge sh.Range("a1") = "开阳县水利局2015年9月21日一2015年 月 日车辆用油清册" sh.Range("a1").HorizontalAlignment = xlCenter sh.Range("a2:L2") = Array("序号", "出车时间", "小车车号", "出差地点", "事由", "用车人", "圈油时间", "驾驶员", "卡号", "金额", "驾驶员签字", "备注") sh.Range("a3").Resize(UBound(arr, 2), 12) = WorksheetFunction.Transpose(arr) sh.Range("a3:L" & (UBound(arr, 2) + 2)).HorizontalAlignment = xlCenter br = Array(6.5, 17, 8.38, 11, 16, 15, 12, 12, 8.38, 8.38, 10, 30) For x = 1 To 12 sh.Columns(x).ColumnWidth = br(x - 1) Next x Erase arr: x = 0 Sheets("汇总表").Activate Next k Application.ScreenUpdating = False End Sub
本文出自 “开始跑” 博客,请务必保留此出处http://splend.blog.51cto.com/3717743/1704007
原文:http://splend.blog.51cto.com/3717743/1704007