加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用VBA得到EXCEL表格中的行数和列数

(2016-07-02 10:46:07)
标签:

it

分类: Excel应用

  每种方法中上面的是Excel的行数,下面的是Excel的列数。

方法1:

  ActiveSheet.UsedRange.Rows.Count   

  ActiveSheet.UsedRange.Columns.Count

       缺点:有时可能会比实际数大一些,原因是如果你把最后几行(列)数据清除后(非整行或整列删除),用这个命令仍返回未清除前的值。就是说现在虽然是空的,但是你曾经用过也算你的。

 

方法2:

  ActiveSheet.Range("A65535").End(xlUp).Row

  ActiveSheet.Range("IV1").End(xlToLeft).Column

  可以简写为:

  ActiveSheet.[A65536].End(xlUp).Row

  ActiveSheet.[IV1].End(xlToLeft).Column

      缺点:只能计算出一列(行)的最后一个单元格所在的行(列)数。本例是只返回A列最后一个单元格所占的行数。

      注意:这种方法返回工作表中最后一个包含非空内容的单元格所在的行号,而不管这一单元格与Me.Cells(1,1)之间是否有包含空白内容的单元格。而且这一方法将跳过或者说忽略被隐藏的单元格,比如,数据表有连续的50行,如果第4850行隐藏了,则只返回47。此外,655362003版工作表最大可用行数(2003 65536行、256 2007 1048576行、16384列),2007版就应该写成ActiveSheet.[A1048576].End(xlUp).Row。除了上面两种写法,还可以写成ActiveSheet.Cells(1048576, 1).End(xlUp).Row

 

方法3:

  ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

  ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column

  缺点:在工作表进行对删除或清除操作时也会变得比实际情况大。

 

方法4:

  ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

  ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column

  缺点:在工作表进行对删除或清除操作时也会变得比实际情况大。

 

方法5

  Application.CountA(ActiveSheet.Range("A:A"))

  Application.CountA(ActiveSheet.Range("1:1"))

  只能统计一列(行)的实际使用情况,得到的不一定是最后一行(列)的位置。方法2的数值比此方法大时,说明在A列的数据间有空白未填写的单元格。

 

方法6

  ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

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

  效果同方法2

 

以上方法中比较常用的是方法1和方法2

 

自己测试过,这个好用。

Dim As Integer                                          '设置变量

 Sheets("工作表").[A1].CurrentRegion.Rows.Count       'I等于总行数

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有