我正在尝试对一系列单元格进行排序,而不对起始点和停止点进行硬编码。我的范围将始终从A列开始并跨越到M列,但是它停止和开始的行会有所不同。我想出了如何设置变量并将其合并到最后一行的Range函数中,但我无法弄清楚如何为该范围应该开始的行执行此操作。到目前为止,这是我的代码:
Range("A6:M" & lastRow).Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlNo
只有当我在第6行开始我的范围时,这才有效。我无法弄清楚的是如何告诉excel在A列中非空白的第一行开始我的范围。
谢谢!
答案 0 :(得分:0)
确定A1是否为空白。如果不是空白则使用A1,如果是空白则使用[ctrl] + [向下]。
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