根据列Aselect不连续范围
我在列A:我有数据。 列A中的数据将始终贯穿到最后一行,而其他列中的其他行有时会空白。 如何根据列A中的最后一行select范围? 例如,有时列A将有40行数据,但列I在第3行后将是空白的。我仍想要selectA1:I40。
最后,我想用VBA来格式化,并在这个范围内放置一个filter,所以我希望不要在列A中最后使用的行之后包含任何空行。
考虑:
Sub qwerty() Dim N As Long N = Cells(Rows.Count, "A").End(xlUp).Row Range("A1:I" & N).Select End Sub
加里的学生给了你答案
也许你有兴趣扩展这个特性,并且想要考虑在整个列范围内至less有一个非空白单元格的最后一行(在你的例子中是列“A:I”),不pipe哪一列有它,比你可以使用:
Function LastRow(sht As Worksheet, columnsStrng As String) As Long With sht With Intersect(.UsedRange, .columns(columnsStrng)).SpecialCells(xlCellTypeConstants) LastRow = .Areas(.Areas.Count).Row End With End With End Function
下面是一个如何使用它的例子
Option Explicit Sub main() Dim ws As Worksheet Set ws = Worksheets("mysheet1") ws.columns("A:I").Resize(LastRow(ws, "A:I")).Select End Sub
这假定你的数据是常量(即实际的单元格内容不是“公式”)。 但是也可以很容易地加强考虑“公式”数据