多列排序

一、背景

需求:对红色方框中的内容进行排序。

 

 

实现后的结果:

等同于下面

 

 

二、代码展示

Option Explicit                   '强制声明,最好写上去
Sub Rank()

    Dim sc, ec As Integer                      'sc:start_row, ec:end_row
    Dim RankColumn  As Variant
    Dim rc                                     ' 如果未声明变量,默认为Variant
    
        
    sc = 5                                     ' 表头位置
    ec = sc + 1                                ' 排序开始的位置
    RankColumn = Array("A", "B", "C")          ' 先按照A排序,在按照B排序,最后按照C排序

    
    ' 确定最后一行的位置
    Do While Cells(ec, 1) <> ""
        ec = ec + 1
    Loop
        
    '清空原有排序并重新排序,不会写没关系,先用录制宏,后改写录制宏的代码就行了
    ActiveSheet.Sort.SortFields.Clear

    For Each rc In RankColumn
        ActiveSheet.Sort.SortFields.Add2 Key:= _
            Range(rc & sc & ":" & rc & ec), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal                           ' _ (下划线)  将一行代码分解成两行;: ( 英文冒号)   将两行代码放置在一行
    Next rc
    
    
    With ActiveSheet.Sort
        .SetRange Range("A" & sc & ":C" & ec)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    
    
    

End Sub

 

三、结果展示

 

posted @ 2025-03-10 11:06  qsl_你猜  阅读(17)  评论(0)    收藏  举报