VBA Excel按特定列排序

Che*_*ese 35 sorting excel vba excel-vba

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

在此输入图像描述

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

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

问题是我不知道如何从A3到最后一行进行选择.

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

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

Range("A3:D8").Sort key1:=Range("B3:B8"), _
order1:=xlAscending, Header:=xlNo
Run Code Online (Sandbox Code Playgroud)

Dmi*_*liv 81

试试这段代码:

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
Run Code Online (Sandbox Code Playgroud)

  • 请注意:这不适用于按字符串排序的日期时间数据类型。将字段转换为 long 然后排序更安全。 (2认同)

L42*_*L42 13

或这个:

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

  • @ sonyisda1这是一个不好的理由,你可以用公式替换变量.但更清楚的是变量会发生什么. (6认同)