excel 宏,如何计算一列数的个数?

比如一个表格中A列有9个数据,如何把9用一个函数表示出来?

excel宏和vb不太一样好像
=countif(A:A,">0") 会报错啊??

使用的代码为range.end(xlup), 以A列举例,代码如下:

Sub tst()
MsgBox Range("a65536").End(xlUp).Row 
End Sub

逻辑就是选中A列的最后一个单元格A65536(注:excel2003版本为A65536, excel03以上版本最后一个单元格为A1048576,代码中数据自行修改),然后ctrl+↑光标快速定位到最后一个有数据的行。

也可以在VBA调用excel函数中的count或counta函数,代码如下:

Sub tst()
MsgBox Application.WorksheetFunction.CountA(Columns("a:a"))
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-21
VBA里没这函数...
有 .count 属性 但是它不管你有没有数据的.只统计给定区域的单元格个数

我帮你想了个笨办法

Sub Macro1()
Dim s As Integer
Range("b1").Value = "=counta(a:a)" 'B1 为临时借用的.可以改成任意一个你用不到空白单元格.
s = Range("b1").Value
Range("b1").Clear
MsgBox s
End Sub

楼上 bergyan 正解.
不过为什么我去试了下
x=worksheetfuction.counta([a:a])不行.
因为你打错一个字了....
x=WorksheetFunction.CountA([a:a])
第2个回答  2009-08-21
假设你想把结果放在B1中,则:
B1=counta(A:A)

在代码中则是:
I=Application.WorksheetFunction.Counta(Columns("A:A"))本回答被提问者采纳
第3个回答  2009-08-21
他们所说的是函数,不是宏。。。。VBA可以调用EXCEL函数的。。如下

x=worksheetfuction.counta([a:a])
第4个回答  2009-08-21
=countif(A:A,">0")

前提是A列类型是数值