EXCEL VBA的代码问题?

a=Cells(Rows.Count,1).End(3).Row我用这条代码获取第1列非空的行数,可是为何空的列数返回的也是1呢?应该是空值啊.是不是写错了呢?... a = Cells(Rows.Count, 1).End(3).Row
我用这条代码获取第1列非空的行数,可是为何空的列数返回的也是1呢?应该是空值啊.是不是写错了呢?
展开
 我来答
匿名用户
2021-01-11
展开全部

End(XX).Row这个函数它主要是查找最后一个非空单元格。

End后面括号内XX有4种参数代表方向:xlup,xldown,xltoleft,xltoright

所以它不能用来实现非空行数。

End(xlDown).Row效果如下,你会看到它的结果是6,xlDown是从1往下找,遇到的第一个空单元格就返回。


xlDown效果如下,它是A列最后一行开始往上找,遇到第一个非空单元格返回,此刻即使A6单元格为空,照样返回11:

如果要实现统计非空个数,可以调用内置函数:

a=Application.WorksheetFunction.CountA (Sheet1.Range("A1:A5000"))

更多追问追答
追问
就是说,在第1列单元格有数值的情况下,就返回最后一行非空的行数....
如果第1列全都是空的情况下,就返回0.这个代码怎么改一下?
追答
你可以改成这样试试:
a = Cells(Rows.Count, 1).End(3).Row
a = Application.WorksheetFunction.CountA(Sheet1.Range("A1:A" & a))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式