实例需求:某学校体育活动统计表如下图左侧表格所示,数据按照班级排列,现在需要根据如下规格对表格进行排序
- “幼儿”班级排列在表格最后
- 按照“次数”降序排列
- “幼儿”班级同样按“次数”降序排列
排序结果如下图中右侧表格所示。
示例代码如下。
Sub Demo1()
Dim i As Long, lastRow As Long
lastRow = Range("A1").End(xlDown).Row
Const HELPER = 4
For i = 2 To lastRow
Cells(i, HELPER) = IIf(Left(Cells(i, 1), 2) = "幼儿", 0, 1)
Next
With Range("A1").CurrentRegion
.Sort key1:=.Columns(HELPER), order1:=xlDescending, _
key2:=.Columns(HELPER - 1), order2:=xlDescending, Header:=xlYes
End With
Columns(HELPER).Clear
End Sub
【代码解析】
第3行代码获取数据总行数。
第4行代码定义辅助列的位置。
第5~7行代码根据班级填充辅助列,“幼儿”班级填充0,其他班级填充1,根据辅助列降序排列,“幼儿”班级将移至最后。<