精华内容
下载资源
问答
  • 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。
    在这里插入图片描述

    展开全文
  • VBA 获取最大行数和最大列数

    万次阅读 2020-01-12 09:19:29
    EXCEL中,对数据进行定位操作,必然要用到数据区域的最大行和最大列,代码如下: columnmax = Range("IV1").End(xlToLeft).Column '取得1行的最大列数 columnmax =cells(i,columns.count).end(xltoletf).column 'i行...

    在EXCEL中,对数据进行定位操作,必然要用到数据区域的最大行和最大列,代码如下:

    columnmax = Range("IV1").End(xlToLeft).Column            '取得1行的最大列数
    columnmax =cells(i,columns.count).end(xltoletf).column   'i行的最大列数

    rowmax = Sheet1.Range("a65536").End(xlUp).Row         '取得A列的最大行
    注:此方法返回工作表中最后一个包含非空内容的单元格所在的行号,而不管这一单元格与Me.Cells(1,1)之间是否有包含空白内容的单元格。而且这一方法将跳过或者说忽略被隐藏的单元格,比如,数据表有连续的50行,如果第48到50行隐藏了,则只返回47.
    rowmax =range("A65536").end(3).row                              '取得A列的最大行数
    rowmax =UBound(Range("a1").CurrentRegion)               '取得A列的最大行数

    Worksheets(1).UsedRange.Columns.count      '获取最大列数和最大行数的写法
    Worksheets(1).UsedRange.Rows.Count
    缺点:​​​​​只要行被使用过,即使数据后来被清空,也算被使用过

    application.WorksheetFunction.函数名()         '想在VBA中用EXCEL的函数

    Application.DisplayAlerts = False    '这个是去掉警告,如文件重复,是否替换
    Application.DisplayAlerts = True    '这个是还原警告,如文件重复

    ActiveWorkbook.Saved = True
    Application.Quit                    '不作修改退出

    'DIM的简便用法
    Integer %         
    Long & 
    Single ! 
    Double # 
    Currency @ 
    String $ 
    String*size $

    展开全文
  • 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()回车,出现数字就是最大列数)。


    展开全文
  • 我常用下面方式取得有效行数: maxrow=sheets(1).[A65536].End(xlUp).Row 实际使用中发现这种方法存在2个问题: 1、高低版本不兼容,2007版最大行数增加以后,就不能用65536了,而要用1048576,即 maxrow = sheets(1)...

    作者:iamlaosong

    我常用下面方式取得有效行数:

    maxrow=sheets(1).[A65536].End(xlUp).Row

    这一句的含义是从A列65536行开始向上找,碰到第一个非空单元格的行号就是有效行数。

    实际使用中发现这种方法存在2个问题:

    1、高低版本不兼容,2007版最大行数增加以后,就不能用65536了,而要用1048576,可以先判断再决定用哪个数字,即用下列语句代替原来的一句,假定文件名变量为rptfile:

            If Right(rptfile, 3) = "xls" Then
                maxrow = [A65536].End(xlUp).Row
            Else
                maxrow = [A1048576].End(xlUp).Row

     

            End If

    对于文件自身,用系统变量ThisWorkbook.name(全路径名称是ThisWorkbook.FullName):

                If Right(ThisWorkbook.name, 3) = "xls" Then
                    maxrow = Sheets(name).[A65536].End(xlUp).Row
                Else
                    maxrow = Sheets(name).[A1048576].End(xlUp).Row
                End If

    2、当最后一行不为空时,用这个方法取不到正确的值。

    3、其实也可以从上往下找,下面语句的意思是从A列第1行往下找,碰到最后一个非空单元格的行号就是有效行数。

                maxrow = [A1].End(xlDown).Row

    这种方法要求有效行数内,A列单元格都是非空,否则就不准了。
     

     

    下面说明用VBA得到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
          缺点:只能计算出一列(行)的最后一个单元格所在的行(列)数。当最后一行或者一列不为空时无法返回正确的结果,而且2007版以后,由于最大行列数增加,兼容性存在问题。本例是只返回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表格中的行数和列数

    万次阅读 多人点赞 2013-07-15 15:38:46
    VBA得到EXCEL表格中的行数和列数    每种方法中上面的是Excel行数,下面的是Excel的列数。 方法1:  ActiveSheet.UsedRange.Rows.Count   ActiveSheet.UsedRange.Columns.Count  缺点:有时可能...
  • VBAExcel文件进行处理的时候,keyword段的列号编程时往往是不知道的。须要通过參数设定才干知道,因此。我们编程的时候,就不能用这种语句取有效行数:  lineno = [B65536].End(xlUp).Row '从下至上找有效行数...
  • VBA取得EXCEL表格中的行数和列数 请注意不要使用Columus等关键字作为变量,例如"Columus = ActiveSheet.UsedRange.Columns.Count"! 初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和...
  • 时隔N年再次拿起VBA-VBA统计文件夹中的excel表格各sheet页行数如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少...
  • 目录 示例: 实现代码1 使用Find方法查找最后的单元格 ... 在VBA中,经常需要对原始数据进行统计。然而在大多数情况下,数据的总行数是未知的,因而会给编写通用性较高的代码造成一些麻烦。如图所示,该表为某公..
  • excel VBA 行列的统计

    2018-11-08 22:15:18
    VBA取得EXCEL表格中的行数和列数 请注意不要使用Columus等关键字作为变量,例如"Columus = ActiveSheet.UsedRange.Columns.Count"! 初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其...
  • 函数作用:获取最后一行行数.........................54 '27.函数作用:判断是否连接在线.........................54 '28.函数作用:币种转换.................................54 '29.函数作用:检验工作表是否有可...
  • excel vba 获取行号

    2014-05-07 11:58:26
    excel vba 获取行号
  • 在编写代码时我们时常用到的是: 取得数据表的最后一行数据所在的行号?这样在编写循环语句时就不用猜着自定义终止值? 代码 code Dim FinalRow As Integer FinalRow = Range("A65536").End(xlUp).Row '得到A列最后数据...
  • Excel中如何有4列,要求用户填写数据的时候每一列都不能为空,否则excel不能保存
  • Excel VBA获取最后一行列

    万次阅读 2015-11-04 21:17:31
    测试excel文件:     VBA代码: Function getLastRow()  Debug.Print "End(xlUp):" & Sheets(1).[A65536].End(xlUp).Row  Debug.Print "usedRange:" & ActiveSheet.UsedRange.Rows.Count  Debug....
  • VBA获得表格最大行列数

    千次阅读 2013-11-19 22:15:39
    _Worksheet ws; Range range; range = ws.GetUsedRange();//获得Worksheet已使用的范围 ...range = range.GetRows();... //即可获得已使用的行数了。 获得列数也是一样的方法,把GetRow
  • Excel的使用过程中,经常需要引用其他工作簿的数据,而用户往往希望能在不打开工作簿或看似不打开工作簿的情况下取得其他工作簿中的数据,有以下几种方法可以实现。 1、使用公式 如果需要引用的数据不是太多,...
  • 导入IT系统发现报错,报错原因为通过B2,B3,B4关联不到对应的产品,查数据是有的,之后查看Excel导入数据发现B2,B3,B4文字前后都有空格,导致数据识别有问题,那目标就是去除文字前后空格就可以了 1.2历史背景: 因为该...
  • VBA 获取Sheet最大行

    2016-02-25 21:28:00
    Not only did I see a huge variety in how Excel is being used, you also pointed out various tips and tricks for writing fast VBA code in Excel. In this post I’m going to share with you the most ...
  • 1 常规方法,把range 定义为 数组 或变量取到的index 是数组的 index Sub test_range1() Dim arr1() arr1 = Range("a3:b5") For i = LBound(arr1) To UBound(arr1) For j = LBound(arr1, 2) To UBound(arr1,...
  • 使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人 Private Sub CommandButton1_Click() '要能正确发送并需要对Microseft Outlook进行有效配置 On Error Resume Next Dim rowCount, endRowNo Dim ...
  • 今天女朋友工作上出了点麻烦,就是要向Word中批量添加图片以及整理成Excel数据的图片名。其中图片名需要设置段落和文字格式,有些图片还是共享一个图片名。这可是个繁琐而枯燥的工作。我一直相信重复劳动是对人这...
  • 如何用VB写一段代码获得Excel文件中已用部分的行数和列数? 楼主ervinlj(阳光使者)2002-09-13 14:36:04 在 VB / 基础类 提问 各位网友,大家好啊: 我想用VB写这样一段代码,代码的功能是获得在Excel文件中已用...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 352
精华内容 140
关键字:

vba取得excel行数