如何从最新到最旧的列排序?

时间:2018-03-31 07:31:19

标签: excel vba excel-vba sorting

我有以下VBA代码:

Sub sort()
    Range("M2:M").Sort _
    Key1:=Range("M2"), Order1:=xlAscending
End Sub

但是,它不起作用。我该如何解决?

1 个答案:

答案 0 :(得分:2)

它无效,因为您在列上使用语法; 想要指定最后一行。 Sort还希望主键是“M2:M”中的第一个单元格。 lr范围。告诉它M2,相对于Range(“M2:M”& lr)实际上是指Y3。你应该知道你是否使用标题;我假设任何标题标签都在M1中,所以对于Range(“M2:M”& lr)你使用Header:= xlNo。

Sub msort()
    dim lr as long
    lr = cells(rows.count, "M").end(xlup).row
    with Range("M2:M" & lr)
        .Sort Key1:=.cells(1), Order1:=xldescending, _
              Orientation:=xlTopToBottom, Header:=xlNo
    end with
End Sub

您还应该避免使用子过程和变量名称的保留字。养成提供父工作表参考的习惯。

顺便说一句,从最新到最旧的日期是xldescending顺序,而不是xlascending。