在excel vba中使用多个键排序数据库

时间:2016-01-31 08:57:48

标签: database excel vba sorting

我想用4个键对数据库进行排序,但每当我添加第4个键时,它的名字命名参数未被找到,而它用这3个键对数据库进行排序..如何在此添加第4个...... ??

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

1 个答案:

答案 0 :(得分:2)

Range.Sort method每个进程最多有三个密钥。但是,如果您先按额外的键排序,然后使用三个最主要的键,则可以获得相同的结果。

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相同的结果。

我尝试使用With ... End With statement来确保定义键的父级的简单方法。您的原始代码依赖ActiveSheet property并不总是可靠的。