精华内容
下载资源
问答
  • VBA取得EXCEL表格中的行数和列数

    千次阅读 2019-07-25 15:50:41
    VBA取得EXCEL表格中的行数和列数 请注意不要使用Columus等关键字作为变量,例如"Columus = ActiveSheet.UsedRange.Columns.Count"! 初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和列数...

    VBA取得EXCEL表格中的行数和列数

    请注意不要使用Columus等关键字作为变量,例如"Columus = ActiveSheet.UsedRange.Columns.Count"!

    初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和列数不确定的情况下。这样可以避免很多的错误,并且可以提高效率。但每次用到的时候到网上查找时,总是给了很多无用的答案,往往找不到想要的结果。笔者也是每次使用时,临时查找总是很头疼。偶然发现一篇博客,上面详细记录了不同的方法,笔者测试了几种发现真的很好用。本着分享万岁的精神,将博客内容共享出来。希望对大家有所帮助。

    来源:http://www.okexcel.com.cn/bbs/viewthread.php?tid=26

    注:每种方法中上面的是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列最后一个单元格所占的行数。

    方法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。
    在这里插入图片描述

    展开全文
  • VBAExcel文件进行处理的时候,keyword段的列号编程时往往是不知道的。须要通过參数设定才干知道,因此。我们编程的时候,就不能用这种语句取有效行数: lineno = [B65536].End(xlUp).Row '从下至上找有效行数 ...

    作者:iamlaosong

    用VBA对Excel文件进行处理的时候,keyword段的列号编程时往往是不知道的。须要通过參数设定才干知道,因此。我们编程的时候,就不能用这种语句取有效行数:

        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 & "\" & datfile
            If Dir(datFullName, vbNormal) <> vbNullString Then
                Workbooks.Open Filename:=datFullName        '打开订单文件
                If Application.Version >= "12.0" And ActiveWorkbook.FileFormat = 51 Then
                    maxrow = Cells(1048576, pos_ems).End(xlUp).Row
                Else
                    maxrow = Cells(65536, pos_ems).End(xlUp).Row
                End If
            Else
                MsgBox "数据文件不存在。", vbOKOnly, "iamlaosong"
                Exit Sub
            End If
    
    。。



    Excel的版本号不同。最大行数和列数不同。2003版最大行数是65536行,最大列数是256列(最后一列IV)。Excel2007及以后的版本号最大行数是1048576行,最大列数是16384列(最后一列XFD)
    打开一个空白新建EXCEL表格,按CTRL+下箭头,能够查看到最大行数;按CTRL+右箭头,能够查看到最大列标(若想显示列数。可在最右一列的某单元格中输入=column()回车,出现数字就是最大列数)。


    转载于:https://www.cnblogs.com/yfceshi/p/6977862.html

    展开全文
  • VBAExcel文件进行处理的时候,关键字段的列号编程时往往是不知道的,需要通过参数设定才能知道,因此,我们编程的时候,就不能用这样的语句取有效行数: lineno = [B65536].End(xlUp).Row  上述语句中的列名“B...

    作者: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 & "\" & datfile
            If Dir(datFullName, vbNormal) <> vbNullString Then
                Workbooks.Open Filename:=datFullName        '打开订单文件
                If Application.Version >= "12.0" And ActiveWorkbook.FileFormat = 51 Then
                    maxrow = Cells(1048576, pos_ems).End(xlUp).Row
                Else
                    maxrow = Cells(65536, pos_ems).End(xlUp).Row
                End If
            Else
                MsgBox "数据文件不存在!", vbOKOnly, "iamlaosong"
                Exit Sub
            End If
    
    。。。

    Excel的版本不同,最大行数和列数不同。2003版最大行数是65536行,最大列数是256列(最后一列IV)。Excel2007及以后的版本最大行数是1048576行,最大列数是16384列(最后一列XFD)
    打开一个空白新建EXCEL表格,按CTRL+下箭头,可以查看到最大行数;按CTRL+右箭头,可以查看到最大列标(若想显示列数,可在最右一列的某单元格中输入=column()回车,出现数字就是最大列数)。


    展开全文
  • VBA取得EXCEL表格中的行数和列数初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和列数不确定的情况下。这样可以避免很多的错误,并且可以提高效率。但每次用到的时候到网上查找时,总是给...

    VBA取得EXCEL表格中的行数和列数

    初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和列数不确定的情况下。这样可以避免很多的错误,并且可以提高效率。但每次用到的时候到网上查找时,总是给了很多无用的答案,往往找不到想要的结果。笔者也是每次使用时,临时查找总是很头疼。偶然发现一篇博客,上面详细记录了不同的方法,笔者测试了几种发现真的很好用。本着分享万岁的精神,将博客内容共享出来。希望对大家有所帮助。

    来源:http://www.okexcel.com.cn/bbs/viewthread.php?tid=26

    注:每种方法中上面的是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列最后一个单元格所占的行数。

    方法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。

    展开全文
  • VBA取得EXCEL表格中的行数和列数 请注意不要使用Columus等关键字作为变量,例如"Columus = ActiveSheet.UsedRange.Columns.Count"! 初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和...
  • VBA 获取最大行数和最大列数

    千次阅读 2020-01-12 09:19:29
    EXCEL中,对数据进行定位操作,必然要用到数据区域的最大行和最大列,代码如下: columnmax = Range("IV1").End(xlToLeft).Column '取得1行的最大列数 columnmax =cells(i,columns.count).end(xltoletf).column 'i行...
  • 我常用下面方式取得有效行数: maxrow=sheets(1).[A65536].End(xlUp).Row 实际使用中发现这种方法存在2个问题: 1、高低版本不兼容,2007版最大行数增加以后,就不能用65536了,而要用1048576,即 maxrow = sheets(1)...
  • excel VBA 行列的统计

    2018-11-08 22:15:18
    VBA取得EXCEL表格中的行数和列数 请注意不要使用Columus等关键字作为变量,例如"Columus = ActiveSheet.UsedRange.Columns.Count"! 初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其...
  • excel VBA

    2010-03-26 13:25:00
    取得当前Sheet名ActiveSheet.Name 取得当前所有行数ActiveSheet.UseRange.Rows.Count 将生成的文本放在同目录下Dim Path AS String 当前xls路径Dim FileNameFile AS String 当前xls文件名,不带.xlsDim ...
  • 04080获取单元格区域的行数 04081获取单元格区域的列数 04082获取单元格的行号 04083获取单元格的列号 04084获取单元格的列标字母 04085获取指定列号单元格的列标字母(之一) 04086获取指定列号单元格的列标字母...
  • 常用下面方式取得Excel工作表的有效行数,前者是2003版,后者是2007版: (1)MaxRow= sheets(1).[A65536].End(xlUp).Row (2)MaxRow= sheets(1).[A1048576].End(xlUp).Row 1、在不知道版本的情况下,一种方法...
  • 函数作用:获取最后一行行数.........................54 '27.函数作用:判断是否连接在线.........................54 '28.函数作用:币种转换.................................54 '29.函数作用:检验工作表是否有可...
  • 26.获取最后一行行数 27.判断是否连接在线 28.币种转换 29.检验工作表是否有可打印内容 30.查找一字符串(withinstr)在另一字符串中(findstr1)中某一次(startnum)出现时的位置,返回零表示没找到。 31.增加文件路径...
  • 'ExcelHome VBA编程学习与实践 Dim Trow&, k&, arr, brr, i&, j&, book&, a& Dim p$, f$, Rng As Range With Application.FileDialog(msoFileDialogFolderPicker) '取得用户选择的文件夹路径 ....

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

vba取得excel行数