VBA Excel按特定列排序

时间:2014-01-30 08:41:26

标签: excel vba excel-vba sorting

我有一个可以包含任意行数的表:

enter image description here

正如我所说它可以包含1或∞行。

我想通过B列中的Date单元格对范围A3:D∞进行排序。我该怎么办?

问题在于我不知道如何从A3到最后一行进行选择。

我认为循环到最后一行不是一个正确的方法。

到目前为止,我已经得到了这个看起来像是正确的,但范围是硬编码的。如何摆脱范围的硬编码?

Range("A3:D8").Sort key1:=Range("B3:B8"), _
order1:=xlAscending, Header:=xlNo

3 个答案:

答案 0 :(得分:79)

试试这段代码:

Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A3:D" & lastrow).Sort key1:=Range("B3:B" & lastrow), _
   order1:=xlAscending, Header:=xlNo

答案 1 :(得分:13)

或者这个:

Range("A2", Range("D" & Rows.Count).End(xlUp).Address).Sort Key1:=[b3], _
    Order1:=xlAscending, Header:=xlYes

答案 2 :(得分:-1)

如果范围和键的起始单元是静态的,则解决方案可以非常简单:

Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort key1:=Range("B3", Range("B3").End(xlDown)), _
order1:=xlAscending, Header:=xlNo