我有以下 VBA 代码:
Sub sort()
Range("M2:M").Sort _
Key1:=Range("M2"), Order1:=xlAscending
End Sub
但是,它不起作用。我如何解决它?
最佳答案
它不起作用,因为您使用的是 google-sheets列上的语法; excel想要指定最后一行。排序还希望主键成为“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。
关于vba - 如何从最新到最旧对列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49585386/