Sub CountingDown()
Dim Dic As Object '用于分类统计
Dim i As Long
Dim CountDown As Long '每页最多几条信息
Dim x As Long, y As Long
Dim Page As Long '页数
Dim Index As Long '每页的序号
Dim Sht As Worksheet
Dim StartRow As Long, EndRow As Long '分页的起始行 Dim mRng As Range '模板区域
Set mRng = Sheets("受理模板").Range("A1:J26") '保存模板区域行高与列宽 With Sheets("总名单")
Page = 0 '分页序号
Index = 0 '姓名序号 '开始划分第一页
i = 2
StartRow = 2
CountDown = 36 '开始倒数信息条数
Set Dic = CreateObject("Scripting.Dictionary") Do While .Cells(i, 1).Value <> "" '循环连续非空行
CountDown = CountDown - 1 '倒数-1 Key = Trim(.Cells(i, 4).Text) '获取分类
If Len(Key) > 2 Then Key = "增驾" '处理分类 If Dic.Exists(Key) = False Then '若是新增的分类
Dic(Key) = 1 '开始计数
CountDown = CountDown - 1 '分类统计需要占用一行
Else
Dic(Key) = Dic(Key) + 1 '如果不是新增的分类,分类计数
End If If CountDown = 0 Or .Cells(i + 1, 1).Value = "" Then '若满一页,或者结束
Page = Page + 1 '新增一页
NewName = "受理名单" & Page '获取新表名
CopyModel NewName '新增名单表
Set Sht = Sheets(NewName) EndRow = i '保存结束行 '初始化 每一页的行列号
x = 0
y = 1
'Index = 0 '改为从一开始算
'内循环
For Each k In Dic.keys '循环每个类别
For n = StartRow To EndRow '循环刚统计的每个人
'处理类别
Key = Trim(.Cells(n, 4).Text)
If Len(Key) > 2 Then Key = "增驾" '如果类别符合,则输出
If Key = k Then
'每满18行,换列
If x = 18 Then
x = 0
y = 6
End If '累计序号
Index = Index + 1 '累计信息序号(包括分类)
x = x + 1 '输出相应的信息
Sht.Cells(3 + x, y).Value = Index
Sht.Cells(3 + x, y + 1).Value = .Cells(n, 1).Value
Sht.Cells(3 + x, y + 2).Value = "'" & .Cells(n, 2).Value End If
Next n '每满18行,换列
If x = 18 Then
x = 0
y = 6
End If
x = x + 1
'输出分类统计结果
Sht.Cells(3 + x, y + 2).Value = k & Dic(k) & "人" Next k '保持模板行高
For x = 1 To 26
Sht.Rows(1).RowHeight = mRng.Rows(x).RowHeight
Next x
For y = 1 To 10
Sht.Columns(y).ColumnWidth = mRng.Columns(y).ColumnWidth
Next y '开始下一页
StartRow = EndRow + 1
CountDown = 36
Set Dic = CreateObject("Scripting.Dictionary")
End If i = i + 1
Loop
End With Set Sht = Nothing
Set Dic = Nothing End Sub
Sub CopyModel(ByVal NewName As String)
Dim mSht As Worksheet
Dim NewSht As Worksheet
Set mSht = Sheets("受理模板")
mSht.Copy After:=Sheets(Sheets.Count)
Set NewSht = Sheets(Sheets.Count)
On Error Resume Next
Sheets(NewName).Delete
On Error GoTo 0
NewSht.Name = NewName
End Sub

  

05-11 20:29