300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【VBA研究】用VBA取得EXCEL任意列有效行数

【VBA研究】用VBA取得EXCEL任意列有效行数

时间:2022-12-11 18:39:08

相关推荐

【VBA研究】用VBA取得EXCEL任意列有效行数

作者:iamlaosong

用VBA对Excel文件进行处理的时候,关键字段的列号编程时往往是不知道的,需要通过参数设定才能知道,因此,我们编程的时候,就不能用这样的语句取有效行数:

lineno = [B65536].End(xlUp).Row'从下至上找有效行数

上述语句中的列名“B”如果是变量,可以用字符串连接的方式实现,即:

pos_ems = "C"

lineno = Range(pos_ems & "65536").End(xlUp).Row

如果给的是列号,则用下列语句:

pos_ems = 3

lineno = Cells(65536, pos_ems).End(xlUp).Row

如果该列所有需要处理的单元格都有值,也可以用下列语句:

lineno = [B1].End(xlDown).Row '从上至下找有效行数

或者 ineno = Cells(pos_fst, pos_ems).End(xlDown).Row

语句中的pos_fst是有效数据的起始行,这个语句的好处是不用管工作表最大行数是65536还是1048576,缺点是如果有效数据只有一行或者该列有空值的话,将取不到有效行数,这也是这种方法不常用的主要原因。

上述语句中的变量pos_ems可以读取单元格的值,以便面对不同文件时随时设置:

pos_fst = Cells(2, 7)pos_ems = Cells(3, 7)pos_sav = Cells(4, 7)lineno = [B65536].End(xlUp).Row '行数,文件数量For unit_num = 5 To lineno '文件循环datfile = Cells(unit_num, 2)'文件名称datFullName = ThisWorkbook.Path & "\" & datfileIf Dir(datFullName, vbNormal) <> vbNullString ThenWorkbooks.Open Filename:=datFullName '打开订单文件If Application.Version >= "12.0" And ActiveWorkbook.FileFormat = 51 Thenmaxrow = Cells(1048576, pos_ems).End(xlUp).RowElsemaxrow = Cells(65536, pos_ems).End(xlUp).RowEnd IfElseMsgBox "数据文件不存在!", vbOKOnly, "iamlaosong"Exit SubEnd If

。。。

Excel的版本不同,最大行数和列数不同。版最大行数是65536行,最大列数是256列(最后一列IV)。Excel及以后的版本最大行数是1048576行,最大列数是16384列(最后一列XFD)。

打开一个空白新建EXCEL表格,按CTRL+下箭头,可以查看到最大行数;按CTRL+右箭头,可以查看到最大列标(若想显示列数,可在最右一列的某单元格中输入=column()回车,出现数字就是最大列数)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。