【发布时间】:2016-06-21 12:13:51
【问题描述】:
我在 A:I 列中有数据。 A 列中的数据总是会一直到最后一行,但其他列中的其他行有时会是空白的。如何根据 A 列中的最后一行选择范围?例如,有时 A 列将有 40 行数据,但第 3 行之后 I 列将是空白的。我仍然想选择 A1:I40。
最终,我想使用 VBA 格式化并在此范围内放置一个过滤器,因此我希望在 A 列中最后使用的行之后不包含任何空白行。
【问题讨论】:
我在 A:I 列中有数据。 A 列中的数据总是会一直到最后一行,但其他列中的其他行有时会是空白的。如何根据 A 列中的最后一行选择范围?例如,有时 A 列将有 40 行数据,但第 3 行之后 I 列将是空白的。我仍然想选择 A1:I40。
最终,我想使用 VBA 格式化并在此范围内放置一个过滤器,因此我希望在 A 列中最后使用的行之后不包含任何空白行。
【问题讨论】:
考虑:
Sub qwerty()
Dim N As Long
N = Cells(Rows.Count, "A").End(xlUp).Row
Range("A1:I" & N).Select
End Sub
【讨论】:
Range("I1",Cells(Rows.Count, 1).End(xlUp)) ;)
加里的学生给了你答案
也许您有兴趣扩展该功能并希望考虑在整个列范围内至少有一个非空白单元格的最后一行(在您的示例中为列“A:I”),无论哪一列都有它,超出你的使用范围:
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
这假设您的数据是常量(即实际单元格内容不是“公式”)。 但它也可以很容易地增强以考虑“公式”数据
【讨论】: