Excel VBA常见问题:如何获取工作表中某一列有多少条记录?

2015-04-15 16:45 阅读 3,982 次 评论关闭

Excel VBA常见问题如何获取工作表中某一列有多少条记录

因为每一列的的记录都不一样多,所以我想获得每一列各有多少条记录,怎么做?

解答:

RecordNumbers=Application.COUNTA(A:A)

或者:

Private Sub UserForm_Activate()
x = Sheet1.UsedRange.Rows.Count
x1 = Sheet1.CountA(c4, cx)

也可以:

Sub aa()
MsgBox (Application.CountA(Range("A:A")))
End Sub

还可以:

Sub aa()
x = Sheet1.UsedRange.Rows.Count
MsgBox (Application.CountA(Range("c3:cx")))
End Sub

这样也行:用下面的方法可测出任一列使用的行数

a=Sheet1.range("b1").End(xlDown).Row。

总结: 
方法1.

Sub aa()
MsgBox (Application.CountA(Range("C:C")))
End Sub
结果永远都是1或者3,可是实际上记录有600多条
方法2.
Sub aa()
Worksheets("sheet1").Activate
Range("c2").Select
x1 = "=COUNTA(sheet1!C)"
MsgBox x1
End Sub
这个是看fhj 示例的文件录制成宏改的,不过运行结果永远是 =counta(sheet1!c)
方法3.
Sub aa()
x1 = "=COUNTA(sheet1!C)"
MsgBox x1
end sub
提示和前面的一样。
其实已经试了几十种方法了。还是错的。作为公式时,是可以使用。但是却无法把获得的值赋值给一个变量。除非是先写到一个单元格里,再重新读出来。不过我觉得太麻烦了。而且写的时候会修改工作表。不是很恰当。

解答:

Application.CountA(Range("C:C"))返回除去无值单元格的所有单元格的数量。
Sheet1.range("C1").End(xlDown).Row返回第一次遇到空单元格前的单元格的数量。
(注:当C列有空白单元格时用:
myEndRow=sheets("sheet1").range("C65536").End(xlUp).row)

结论:

Sub aa()
x1 = Sheet1.Range("C3").End(xlDown).Row
MsgBox x1
end sub

这就对了。谢谢各位!
推荐你用Columns(1).SpecialCells(xlCellTypeConstants).Count

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:Excel VBA常见问题:如何获取工作表中某一列有多少条记录? | 猎微网

评论已关闭!