【问题标题】:VBA sorting a range with no hardcodingVBA 对没有硬编码的范围进行排序
【发布时间】:2018-01-19 06:00:47
【问题描述】:

我正在尝试对一系列单元格进行排序,而无需对起点和终点进行硬编码。我的范围将始终从 A 列开始并跨越到 M 列,但是它停止和开始的行会有所不同。我想出了如何设置变量并将其合并到最后一行的 Range 函数中,但我不知道如何为范围应该开始的行执行此操作。到目前为止,这是我的代码:

Range("A6:M" & lastRow).Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlNo

仅当我从第 6 行开始我的范围时才有效。我想不通的是如何告诉 excel 从 A 列中非空白的第一行开始我的范围。

谢谢!

【问题讨论】:

  • 您需要更新Range("A6:M") 部分吗?类似Range("A" & startRow & ":M" & lastRow).Sort ...
  • 你这个人!谢谢

标签: excel vba sorting range


【解决方案1】:

判断 A1 是否为空白。如果不是空白则使用 A1,如果为空白则使用 [ctrl]+[down]。

dim startRow as long, lastRow as long
With worksheets("sheet1")
    lastRow = .cells(.rows.count, "M").end(xlup).row
    if isempty(.cells(1, "A") then
        startrow = .cells(1, "A").end(xldown).row
    else
        startRow = 1
    end if
    with .range(.cells(startrow, "A"), .cells(lastrow, "M"))
        .cells.Sort Key1:=.cells(1), Order1:=xlAscending, Header:=xlNo
    end with
end with

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多