在vba中查找行数 – 方法的解释

我一直在试图find使用vba特定列的行数,

我发现它可以通过使用两种方法来完成,所有这三种方法都涉及范围(我通过简单的谷歌search发现了这一点,然后编辑我发现的以适应我的需要)

不过我觉得如果我明白他们每个人做了什么以及他们彼此之间有什么不同的话,我会更适合

我使用的两个代码如下:

i = Application.CountA(Range("A:A")) lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 

任何人都可以解释我是如何工作的,两者有什么区别? 另外,如果您知道其他有效的方式,那么在这里分享它会有所帮助。

 i = Application.CountA(Range("A:A")) 

这将返回列A中包含值的所有单元格的计数。 他们不必在连续的单元格中。

 lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 

这到达列A底部的最后一个单元,然后等同于按结束键,然后按向上箭头键。 这将返回包含值的列中最后一个单元格的行索引。

使用Find是优越的

  • 不像xlUp迎合隐藏的单元格(但没有过滤掉单元格)
  • 避免虚报空白或不太可能的全列。 看到这里

查找方法

 Sub GetLastA() Dim rng1 As Range Set rng1 = Columns("A:A").Find("*", [a1], xlFormulas) If Not rng1 Is Nothing Then MsgBox "last row is " & rng1.Row Else MsgBox "no used cells found", vbCritical End If End Sub