【问题标题】:Counting Rows Using a Loop in VBA?在 VBA 中使用循环计算行数?
【发布时间】:2021-08-25 00:21:03
【问题描述】:

我知道如何使用以下语法计算行数(并以消息形式显示结果):

Sub CountRows1()
    Dim last_row As Long
    last_row = Cells(Rows.Count, 1).End(xlUp).Row
    MsgBox (last_row)
End Sub

我想知道是否有另一种方法可以不声明变量,而是选择一个范围,然后使用偏移量。

我正在考虑以下内容,但不知道从哪里开始:

Sub UseLoop ()
    Range ("A1").Select 
    Do Until Active.Cell.Value = ""
        -- Something to do the counting, can't seem to get this part right 
        ActiveCell.Offset (1,0).Select 
    Loop 
End Sub

【问题讨论】:

  • 请告诉我们更多关于“不声明变量”以及为什么要避免这种情况?
  • 按照你的理论,如果你的数据中间有一个空白单元格会怎样?
  • 从你的帖子中并不清楚你到底想做什么。
  • 无变量 - MsgBox (Cells(Rows.Count, 1).End(xlUp).Row)?

标签: vba loops


【解决方案1】:

你好,这样的计数行太危险了。 (xlDown)

因为如果你有 a5 空的 eample 。 但是a1到a4是满的,a6是满的。 您的结果将是 a6(发现 a5 为空,并且一行偏移量等于 a6,这是错误的)..

更好的方法是下到 Excel 的最后一行(第 1048572 行) 然后使用 xlUp 这有点好,但它有边缘情况太悬停可能更少!并且它没有找到(考虑)中间的空行。

cells(rows.count,1).xlUp.offset(1,0)

最好的方法: 需要声明 VARIABLE !!!

declare a var by initial values of 1 

dim i as integer 
i=1

do 
 
i=i+1


while (cells(x,1).value !=null )

现在我就是你想要的。 !

【讨论】:

  • 要注意 do while 和 while 差异,其中一个需要在循环之后添加一个才能找到第一个空行,另一个不需要。您可以使用任何其他循环来实现这种方法。
  • 为了走到最后一行然后往上走:你需要这样的东西。单元格(rows.count,1).xlUp.offset(1,0)
猜你喜欢
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
相关资源
最近更新 更多