我想用4个键对数据库进行排序,但是每当添加第4个键时,都找不到它的saying named参数,而用这3个键对数据库进行排序。如何在这个…中添加第四个?是吗?

Range("A1:E" & lastrow).Sort key1:=Range("A1:A" & lastrow), order1:=xlAscending, _
                             key2:=Range("C1:C" & lastrow), order2:=xlAscending, _
                             key3:=Range("D1:D" & lastrow), order3:=xlDescending, _
                             Header:=xlYes

最佳答案

每个进程最多有三个键。但是,如果首先按额外的键排序,然后按最主要的三个键进行排序,则会得到相同的结果。

With Range("A1:E" & lastrow)
    'sort on the 4th key first (column E)
    .Cells.Sort Key1:=.Columns(5), Order1:=xlAscending, _
                Orientation:=xlTopToBottom, Header:=xlYes
    'sort on the 1st, 2nd and 3rd keys (columns A, C and D)
    .Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
                Key2:=.Columns(3), Order2:=xlAscending, _
                Key3:=.Columns(4), Order3:=xlAscending, _
                Orientation:=xlTopToBottom, Header:=xlYes
End With

这产生的结果与方法中允许的Key4:=.Columns(5), Order4:=xlAscending相同。
我尝试使用Range.Sort method来确保定义键的父级的简单方法。您的原始代码依赖于不总是可靠的With ... End With statement

10-06 07:11