【问题标题】:Select discontinuous range based on column A根据 A 列选择不连续范围
【发布时间】:2016-06-21 12:13:51
【问题描述】:

我在 A:I 列中有数据。 A 列中的数据总是会一直到最后一行,但其他列中的其他行有时会是空白的。如何根据 A 列中的最后一行选择范围?例如,有时 A 列将有 40 行数据,但第 3 行之后 I 列将是空白的。我仍然想选择 A1:I40。

最终,我想使用 VBA 格式化并在此范围内放置一个过滤器,因此我希望在 A 列中最后使用的行之后不包含任何空白行。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    考虑:

    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)) ;)
    • 非常感谢!!这行得通!我尝试了很多次,但它不起作用,然后我意识到我之前在宏中有一些垃圾导致它不起作用。
    【解决方案2】:

    加里的学生给了你答案

    也许您有兴趣扩展该功能并希望考虑在整个列范围内至少有一个非空白单元格的最后一行(在您的示例中为列“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
    

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

    【讨论】:

    • 感谢您的帮助!我能够成功使用 Gary 的学生回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2021-10-12
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多