在vba中查找行数 - 方法说明

时间:2014-01-07 02:40:48

标签: excel excel-vba vba

我一直在尝试使用vba

找到特定列的行数

我发现它可以通过使用两种方法来完成,所有这三种方法都涉及范围(我通过简单的谷歌搜索找到了这个,然后编辑我发现的符合我需要的方法)

但是我觉得如果我理解他们每个人做了什么以及他们彼此之间的差异会更适合我

我使用的两个代码如下:

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

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

有谁能请解释我这两个是如何工作的,两者有什么区别?此外,如果你知道任何其他有效的方式,如果你在这里分享它会很有帮助。

3 个答案:

答案 0 :(得分:3)

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

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

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

这将转到A列底部的最后一个单元格,然后按下End键,然后按向上箭头键。这将返回包含值的列中最后一个单元格的行索引。

答案 1 :(得分:2)

使用Find是优越的

  • xlUp不同,是为了隐藏单元格(但不是过滤掉的单元格)
  • 避免空白或不太可能的完整列的错误报告。请参阅here

查找方法

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

答案 2 :(得分:0)

Sub row_cownt()
Dim R As Double
Dim C As Double

R = Cells.Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row

C = Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column


MsgBox "Row =" & R
MsgBox "Column =" & C
End Sub