使用 4 列自定义排序

问题描述 投票:0回答:1

我试图按四个不同的列对数据进行排序,首先是 D,然后是 E,然后是 F,然后是 G,按升序排列。每次运行报告时,行数都会发生变化,因此我需要它对工作表中活动的内容进行排序。此 VBA 代码可以正常工作,但我怀疑如果行数超过 30533 行,则无法正常工作。

Sub Rx_Custom_Sort_1()
ActiveWorkbook.Worksheets("Prescriptions_Clean_2b").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Prescriptions_Clean_2b").Sort.SortFields.Add2 Key _
:=Range("D2:D30533"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Prescriptions_Clean_2b").Sort.SortFields.Add2 Key _
:=Range("E2:E30533"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Prescriptions_Clean_2b").Sort.SortFields.Add2 Key _
:=Range("F2:F30533"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Prescriptions_Clean_2b").Sort.SortFields.Add2 Key _
:=Range("G2:G30533"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Prescriptions_Clean_2b").Sort
.SetRange Range("A1:N30533")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
excel vba sorting
1个回答
0
投票
Sub Rx_Custom_Sort_1()
    Dim lastRow As Long
    With ActiveWorkbook.Worksheets("Prescriptions_Clean_2b")
        lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Sort.SortFields.Clear
        .Sort.SortFields.Add2 Key:=Range("D2:D" & lastRow), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Sort.SortFields.Add2 Key:=Range("E2:E" & lastRow), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Sort.SortFields.Add2 Key:=Range("F2:F" & lastRow), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Sort.SortFields.Add2 Key:=Range("G2:G" & lastRow), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With .Sort
            .SetRange .Range("A1:N" & lastRow)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.