【问题标题】:Last Row in a Range - last row is NOT last used row on entire sheet范围中的最后一行 - 最后一行不是整个工作表上最后使用的行
【发布时间】:2013-11-12 00:10:29
【问题描述】:

我已经四处寻找如何找到范围中的最后一行,但我找到的答案最多只能给我整个工作表中最后使用的行。

例如,假设我在A1:A10B6:B9C1:C4 中有元素。我想在B:C 列中找到最后一行。在这种情况下,答案应该是第 9 行。我尝试使用 SpecialCells(xlLastCell),但只得到第 10 行的答案。

我确信有一个非常简单的答案,但我找不到!有人可以帮忙吗?

【问题讨论】:

    标签: excel range vba


    【解决方案1】:

    这是一个示例,说明如何使用 VBA 返回 B:C 列中最后一行的编号:

    Sub ReturnLastRow()
        MsgBox "Last row in columns B:C is " & _
            WorksheetFunction.Max(ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row, ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row)
    End Sub
    

    【讨论】:

    • 哦,酷!我很确定这正是我正在寻找的。我很高兴明天测试它!
    • @SørenHoltenHansen +1 好答案
    • @SørenHoltenHansen,谢谢!刚要试一试。像魅力一样工作。
    【解决方案2】:

    要获取特定范围内的最后一行,不一定是特定行,您可以简单地引用该范围内的最后一个单元格,类似于使用数组的方式:

    Set RR = Range("B6:B9", "C4:C11")
    MsgBox "The Last Row is " & RR(RR.Count).Row
    

    Set RR = Range("B6:B11", "C4:C8")
    MsgBox "The Last Row is " & RR(RR.Count).Row
    

    在上例中,两者都将返回 11 作为最后一行。

    【讨论】:

      【解决方案3】:

      对于任何范围r

      nLastRow = r.Rows.Count + r.Row - 1
      MsgBox ("last row " & nLastRow)
      
      nLastColumn = r.Columns.Count + r.Column - 1
      MsgBox ("last column " & nLastColumn)
      
      nFirstRow = r.Row
      MsgBox ("first row " & nFirstRow)
      
      nFirstColumn = r.Column
      MsgBox ("first column " & nFirstColumn)
      
      numrow = r.Rows.Count
      MsgBox ("number of rows " & numrow)
      
      numcol = r.Columns.Count
      MsgBox ("number of columns " & numcol)
      

      【讨论】:

        猜你喜欢
        • 2017-10-28
        • 2010-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-21
        • 2016-10-10
        • 1970-01-01
        相关资源
        最近更新 更多