【问题标题】:Sorting data by three separate columns按三个单独的列对数据进行排序
【发布时间】:2018-02-12 05:18:00
【问题描述】:

我正在尝试按三个不同的值对电子表格中的数据进行排序:

  1. F 列 - 值 - 从最旧到最新
  2. B 列 - 值 - 从最小到最大
  3. A 列 - 值 - Z 到 A

代码停止并在 .Apply 部分出现错误。我担心单元格选择是个问题。

Sub DatePartOrderSort()
'
' DatePartOrderSort Macro
'
'
    LR = Cells(Rows.Count, "A").End(xlUp).Row
    Range(Cells(5, "A"), Cells(LR, "J")).Select
    '
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("Date Order").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Date Order").Sort.SortFields.Add Key:=Range( _
    Cells(5, "A"), Cells(LR, "J")), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Date Order").Sort.SortFields.Add Key:=Range( _
    Cells(5, "A"), Cells(LR, "J")), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Date Order").Sort.SortFields.Add Key:=Range( _
    Cells(5, "A"), Cells(LR, "J")), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Date Order").Sort
        .SetRange Range(Cells(5, "A"), Cells(LR, "J"))
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试这个:

    Sub DatePartOrderSort()
    '
    ' DatePartOrderSort Macro
    '
    '
        LR = Cells(Rows.Count, "A").End(xlUp).Row
        Range(Cells(5, "A"), Cells(LR, "J")).Select
        '
        Application.CutCopyMode = False
        ActiveWorkbook.Worksheets("Date Order").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Date Order").Sort.SortFields.Add Key:=Range( _
        "F5:F" & LR), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        ActiveWorkbook.Worksheets("Date Order").Sort.SortFields.Add Key:=Range( _
        "B5:B" & LR), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        ActiveWorkbook.Worksheets("Date Order").Sort.SortFields.Add Key:=Range( _
        "A5:A" & LR), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Date Order").Sort
            .SetRange Range(Cells(5, "A"), Cells(LR, "J"))
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    

    【讨论】:

    • 谢谢你 - 我现在有很多空白行,我想留下最后两个空白,无论如何使用 VBA 来做到这一点。
    • 把这个放到一个新问题中。
    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多