VBA Excel按特定列sorting范围

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

在这里输入图像说明

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

我想通过列B中的Date单元格来sorting范围A3:D∞。我该怎么做?

问题是我不知道如何从A3select到最后一行。

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

我到目前为止,它看起来像正确的,但范围是硬编码。 我如何摆脱范围的硬编码?

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

试试这个代码:

 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 

或这个:

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

如果范围和密钥的起始单元格是静态的,则解决scheme可以非常简单:

 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