【问题标题】:How to get the row count in EXCEL VBA如何在 EXCEL VBA 中获取行数
【发布时间】:2021-03-03 08:28:36
【问题描述】:

我正在用 excel 开发仪表板。我正在寻找计算行数。 (有多少条记录)..

由于有一些空白单元格,我想从下到上。我使用以下

   Range("A1048576").Select
Selection.End(xlUp).Select

执行此操作后,活动单元格位于 A113,这意味着行数为 113。

我的问题是如何从活动单元格中获取这个数字 113?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你可以用这个:

    Dim lastrow as Long
    lastrow = Cells(Rows.Count,"A").End(xlUp).Row
    

    lastrow 将包含A 列中最后一个空行的编号,在您的情况下为 113

    【讨论】:

    • 非常感谢 Simco :)
    • @Dmitry Pavliv 如何调整它以执行相同的功能来计算列数而不是行数?
    【解决方案2】:

    这是我通常使用的:

    lastrow = WorksheetFunction.CountA(Columns("A:A"))
    

    这将返回“A”列中非空单元格的数量,这就是我认为您所追求的。希望这会有所帮助。

    【讨论】:

    • 嗨,吉姆,实际上这对我不起作用..例如,如果我删除 cellA12 内容...它将返回 112 ..但我想要最后一行...但非常感谢您的回复:)
    • 哎呀,对不起。我一定是误会了。好吧,无论如何,如果您需要这样的功能,它就在那里。小心。祝你的项目好运!
    【解决方案3】:

    获取行数/记录数的最佳方法(在大多数情况下)是使用.UsedRange.Rows.Count。您可以将返回值分配给这样的变量:

    lastRow = Sheets(1).UsedRange.Rows.Count
    

    如果您使用包含列(如 A 列)的函数,如其他示例中所示,那只会得到该列中的行数,这可能是也可能不是您想要的。一个警告:如果您在最后一行下方使用值格式化了行,那么它将返回该行号。

    【讨论】:

      【解决方案4】:

      如果工作表的最后一行不为空的可能性很小,您应该在@simoco 的解决方案中添加IsEmpty() 检查。所以;以下是返回最后使用的行并检查工作表的最后一行是否为空的函数:

      Function lastRow(WS As Worksheet, iColumn As String) As Long
      
          If Not IsEmpty(WS.Range(iColumn & WS.Rows.Count)) Then
              lastRow = WS.Rows.Count
          Else
              lastRow = WS.Range(iColumn & WS.Rows.Count).End(xlUp).Row
          End If
      
      End Function
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-29
        • 1970-01-01
        • 2015-02-04
        • 2021-05-06
        • 2019-02-08
        • 1970-01-01
        相关资源
        最近更新 更多