根据列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 

这假定你的数据是常量(即实际的单元格内容不是“公式”)。 但是也可以很容易地加强考虑“公式”数据