【问题标题】:How to apply an Array to a sort in VBA如何将数组应用于 VBA 中的排序
【发布时间】:2021-10-30 20:55:27
【问题描述】:

下面的脚本突出显示了一个数组 B4:F9。

然后我想用数组替换 Ranges (B4:B9) 和 (B4:F9),以便对数组进行排序。

此数组根据数组的行数/列数而变化。

Sub Macro6()

'Highlights the array
    Range("B4").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
'
    ActiveWorkbook.Worksheets(I).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(I).Sort.SortFields.Add2 Key:=Range( _
        "B4:B9"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets(I).Sort
        .SetRange Range("B4:F9")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

【问题讨论】:

    标签: arrays excel vba sorting


    【解决方案1】:

    我不确定这是否是您需要的!尝试告诉我们。

    Sub SortSheet1()
        Dim keyRng As Range
        
        ' key range
        Set keyRng = Range(Range("B4"), Range("B4").End(xlDown))
        Debug.Print keyRng.Address
        
        ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 _
            Key:=keyRng, _
            SortOn:=xlSortOnValues, _
            Order:=xlAscending, _
            DataOption:=xlSortNormal
            
        With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    

    【讨论】:

    • 感谢 Elio,非常感谢!
    • @user11797977,如果有用别忘了检查一下!
    猜你喜欢
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2018-11-06
    • 2017-07-07
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多