获取excel多列区域最后非空单元格行数(VBA5练习2)[Excel精英培训网]

合集下载

VBA技巧3 获得指定行、列中的最后一个非空单元格

VBA技巧3   获得指定行、列中的最后一个非空单元格

技巧1 获得指定行、列中的最后一个非空单元格使用VBA对工作表进行操作时,经常需要定位到指定行或列中最后一个非空单元格,此时可以使用Range对象的End属性,在取得单元格对象后便能获得该单元格的相关属性,如单元格地址、行列号、数值等,如下面的代码所示。

#001 Sub LastRow()#002 Dim rng As Range#003 Set rng = Sheet1.Range("A65536").End(xlUp)#004 MsgBox "A列中最后一个非空单元格是" & rng.Address(0, 0) _#005 & ",行号" & rng.Row & ",数值" & rng.Value#006 Set rng = Nothing#007 End Sub代码解析:LastRow过程使用消息框显示工作表中A列最后非空单元格的地址、行号和数值。

End属性返回一个Range对象,该对象代表包含源区域的区域尾端的单元格。

等同于按键<End+向上键>、<End+向下键>、<End+向左键>或<End+向右键>,语法如下:expression.End(Direction)参数expression是必需的,一个有效的对象。

参数Direction是可选的,所要移动的方向,可以为表格1-1所示的XlDirection 常量之一。

表格1-1 XlDirection 常量Range对象的End属性返回的是一个Range对象,因此可以直接使用该对象的属性和方法。

运行LastRow过程结果如图1-1所示。

图1-1 获得A列最后一个非空单元格通过修改相应的参数,能够获得指定行中最后一个非空单元格,如下面的代码所示。

#001 Sub LastColumn()#002 Dim rng As Range#003 Set rng = Sheet1.Range("IV1").End(xlToLeft)#004 MsgBox "第一行中最后一个非空单元格是" & rng.Address(0, 0) _#005 & ",列号" & rng.Column & ",数值" & rng.Value#006 Set rng = Nothing#007 End Sub代码解析:LastColumn过程使用消息框显示工作表中第一行最后一个非空单元格的地址、列号和数值,如图1-2所示。

EXCEL如何获取某列中的最后一个非空的数值?

EXCEL如何获取某列中的最后一个非空的数值?

EXCEL如何获取某列中的最后一个非空的数值?EXCEL如何获取某列中的最后一个非空的数值?假如A列=INDEX(A:A,MAX(IF(A:A<>"",ROW(A:A)))) 写完后ctrl+shift+enter原理,列出A列所有不为空的单元格的行IF(A:A<>"",ROW(A:A) 求最大的行,即最后一个MAX(IF(A:A<>"",ROW(A:A))在A列里面符合要求的那个INDEX(A:A,MAX(IF(A:A<>"",ROW(A:A))))数组计算,所以要ctrl+shift+enterEXCEL如何获取某列中的最后一个数所要取的列里的数据必须是数字才可以用下面的公式放到一个文档里处理吧要不你没次都要同时打开这两个文档假设你第一个工作表是sheet1,第二个工作表是sheet2 那么在sheet1的A1中输入=LOOKUP(9E+307,Sheet2!E:E)就可以取到如果确定不能放在一个文件中,第一个文件名AAA第二个文件名BBB 那么在A1中输入=LOOKUP(9E+307,[BBB.xls]sheet1!E:E)excel如何获取某列中的最后一个数如果获取A列的最后一个数值,那么输入=LOOKUP(9E+307,A:A)Excel中如何获取某列(行)最后一个非空单元格的值获取D列最后一个非空数值单元格的值: =lookup(9e307,D:D)。

获取第7行最后一个非空数值单元格的值:lookup(9e307,7:7)。

获取D列最后一个非空文本单元格的值: =lookup(char(65535),D:D)获取第7行最后一个非空文本单元格的值:=loolup(char(65535),5:5) 关键:lookup函数9e307(Excel允许输入的最大数值。

vba程序中如何返回最后一列不为空

vba程序中如何返回最后一列不为空

vba程序中,如何返回最后一列不为空vba程序中,如何返回最后一列不为空的列的列号[Microsoft Excel精英论坛]Nextcol=Cells(1,255).End(xlToLeft).Column&#39;取从cells(1,255)向左查找到的第一个非空值单元格的列数,不含cells(1,255),与连续与否无关,没查到时返回第一列列号cells(1,columns.count).end(xltoleft).column 返回第一列列号Nextcol=Cells(1,1).End(xlToright).Column&#39;取从cells(1,1)向右查找到的第一个非空值单元格的列数,不含cells(1,1),与连续与否无关,没查到时返回最后一列列号Nextcol=Cells(65536,1).End(xlup).row&#39;取从cells(65536,1)向上查找到的第一个非空值单元格的行数,不含cells(65536,1),与连续与否无关,没查到时返回第一行行号Nextcol=Cells(1,1).End(xldown).row&#39;取从cells(1,1)向下查找到的第一个非空值单元格的行数,不含cells(1,1),与连续与否无关,没查到时返回最后一行行号上面的方法不能判断隐藏行(如果最后几行隐藏会被漏过)**********************************************************************************************用VBA得到EXCEL表格中的行数和列数编程总结每种方法中上面的是Excel的行数,下面的是Excel的列数。

方法1:edRange.Rows.CountedRange.Columns.Count缺点:有时可能会比实际数大一些,原因是如果你把最后几行(列)数据清除后(非整行或整列删除),用这个命令仍返回未清除前的值。

excel获取行内最后一列非空数据的函数

excel获取行内最后一列非空数据的函数

Excel 表格是一个非常常用的办公工具,它可以用来存储、处理和分析数据,而在 Excel 中获取行内最后一列非空数据的需求也是非常常见的。

本文将介绍几种可以用来实现这个功能的 Excel 函数和方法。

一、使用 INDEX 和 MATCH 函数INDEX 函数通常用于返回指定区域中的单元格的值,而 MATCH 函数则用于查找指定值在某个区域中的位置。

通过结合这两个函数,我们可以很方便地获取行内最后一列非空数据。

具体的公式如下:=INDEX($1:$1,MAX(IF($1:$1<>"",COLUMN($1:$1))))这个公式的作用是,在第 1 行中找到最后一个非空单元格,并返回其值。

其中 $1:$1 表示第 1 行,MAX 函数用于返回数组或数据集合中的最大值,IF 函数用于判断条件是否成立并返回相应的值,COLUMN 函数用于返回单元格的列号。

二、使用 LOOKUP 函数LOOKUP 函数也可以用来实现获取行内最后一列非空数据的功能。

具体的公式如下:=LOOKUP(2,1/(1:1<>""),1:1)这个公式的作用也是在第 1 行中找到最后一个非空单元格,并返回其值。

其中 2 是一个超出范围的值,1/(1:1<>"") 是一个数组公式,用来返回一个由 TRUE 和 FALSE 构成的数组,LOOKUP 函数将这个数组作为查找范围,当查找值大于查找范围中的所有值时,会返回查找范围中的最后一个值。

三、使用 VBA 宏除了以上介绍的函数和公式之外,我们还可以通过编写 VBA 宏来实现获取行内最后一列非空数据的功能。

具体的 VBA 代码如下:Sub GetLastNonEmptyCell()Dim lastCol As LonglastCol = Cells(1, Columns.Count).End(xlToLeft).ColumnMsgBox Cells(1, lastCol).ValueEnd Sub这段 VBA 代码的作用是找到第 1 行中最后一个非空单元格,并弹出其值。

EXCEL小技巧如何统计非空单元格

EXCEL小技巧如何统计非空单元格

EXCEL小技巧如何统计非空单元格在Excel中,统计非空单元格是一个非常常见的任务。

这可以帮助我们计算有多少个有效的数据点,避免在计算和分析数据时出现错误。

以下是几种常用的Excel小技巧来统计非空单元格。

1.使用COUNTA函数:COUNTA函数可以用于统计选择范围中的非空单元格数量。

例如,假设我们有一列数据位于A1到A10单元格,我们想要统计其中的非空单元格数量,则可以使用以下函数:=COUNTA(A1:A10)这将返回A1到A10中的非空单元格数量。

2.使用COUNTIFS函数:COUNTIFS函数在满足给定条件的情况下统计单元格的数量。

如果我们想要统计其中一列中满足一些条件的非空单元格数量,可以使用COUNTIFS函数。

例如,假设我们想要统计A1到A10范围中大于0的非空单元格数量,则可以使用以下公式:=COUNTIFS(A1:A10,">0")这将返回A1到A10中满足大于0条件的非空单元格数量。

3.使用SUMPRODUCT函数:SUMPRODUCT函数可以用于计算数组中满足给定条件的单元格的数量。

如果我们想要统计A1到A10范围中非空单元格的数量,则可以使用以下公式:=SUMPRODUCT(--(A1:A10<>""))这将返回A1到A10中的非空单元格数量。

4.使用自动过滤:Excel的自动过滤功能可以帮助我们快速筛选非空单元格。

选择数据范围,然后点击“数据”选项卡上的“筛选”按钮。

这将为数据添加筛选下拉箭头。

点击箭头并选择“空白”选项将只显示非空单元格。

之后,我们可以查看筛选后的数据行数来获取非空单元格的数量。

5.使用条件格式化:条件格式化是一种在给定条件下格式化单元格的方法。

我们可以使用条件格式化来突出显示非空单元格。

选择数据范围,然后点击“开始”选项卡上的“条件格式化”按钮。

选择“新建规则”,然后选择“使用公式确定要格式化的单元格”。

行或列中最后一个非空单元格ExcelFans

行或列中最后一个非空单元格ExcelFans

行或列中最后一个非空单元格ExcelFans在Excel 中我们能够使用数组公式来找到行或列中的最后一个非空单元格。

然后再此通过单元格的地址并使用INDIRECT 函数就可以获取到此单元格的值。

取得一列中的最后一个非空行1、接下来的公式可以返回A列中最后一个非空单元格的行号:=MAX((A:A<>"")*(ROW(A:A)))2、通过这个行号我们就可以使用 ADDRESS 函数来获取到此单元格的地址:=ADDRESS(MAX((A:A<>"")*(ROW(A:A))),COLUMN(A:A))3、最后我们以此获取到的地址为基础使用INDIRECT 函数就可以获取到此单元格的值=INDIRECT(ADDRESS(MAX((A:A<>"")*(ROW(A:A))),COLUMN(A:A)))取得一行中的最后一个非空列1、接下来的公式和上面取得非空行的公式原理是一样的,它可以返回第一行中最后一个非空单元格的列号:=MAX((1:1<>"")*(COLUMN(1:1)))2、同理通过这个列号我们就可以使用 ADDRESS 函数来获取到此单元格的地址:=ADDRESS(1,MAX((1:1<>"")*COLUMN(1:1)),1)3、最后我们以此获取到的地址为基础使用 INDIRECT 函数就可以获取到此单元格的值=INDIRECT(ADDRESS(3,MAX((3:3<>"")*COLUMN(3:3)),1))注意:以上公式都是数组公式,所以你必须使用CTRL+SHIFT+ENTER 来输入这些公式,如果没有那就恭喜你——出错了^_^.。

怎样提取最后一列非空单元格内容?

怎样提取最后一列非空单元格内容?

怎样提取最后⼀列⾮空单元格内容?如图1,有多列数据,怎样提取最后⼀列⾮空单元格内容,⽐如,第2⾏最后⼀列⾮空单元格是B2,就把B2的内容提取出来,第5⾏最后⼀列⾮空单元格是A5,当⾏数很多的时候,⼀个个⼿⼯提取就⾮常慢,怎样快速提取呢?⽤函数Lookup轻松实现。

图1在D列输⼊公式=LOOKUP(2,1/(A2:C2<>""),A2:C2)我们先来看看lookup的基本语法,第1个参数lookup_value是要查找的值,第2个参数lookup_vector是在该数值值中查找,第3个参数result_vector返回该数组值中相对位置的值.如图2。

如果是找不到要查找的,会从后向前查找到⽐它⼩的值,如果找不到,则返回错误值。

注意:1、查找的区域必须按升序排列。

...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE2、查找的区域可以有错误值,但在查找时会被忽略图2我们再来看这个公式分解:1、以第2⾏公式为例,公式A2:C2<>"" ,返回的是数组true,true,false,选中公式标红的部分按F9可以看到;2、1/(true,true,false),得到数组(1,1,#DIV/0!)选中公式中标红的部分按F9可以看到;3、在数组(1,1,#DIV/0!)中查找⽐第⼀个参数2,查找不到2,返回⽐2⼩的值,错误值可以忽略,所以返回的是最后的1对应的B2单元格内容。

关于Lookup函数有些通⽤的公式返回对应的内容,汇总如下:A1:A20存放着数字、⽂本、错误值等,下列公式将返回:=LOOKUP(9E+307,A1:A20)返回数值=LOOKUP(9E+307,A1:A20,ROW(A1:A20))返回数值对应的⾏号=LOOKUP(2,1/(A1:A20<>""),A1:A20)返回⾮空单元格=LOOKUP(2,1/(A1:A20<>""),ROW(A1:A20))返回⾮空单元格的⾏号=LOOKUP(2,1/(A1:A20<>0),A1:A20)返回⾮零单元格=LOOKUP(2,1/(A1:A20<>0),ROW(A1:A20))返回⾮零单元格的⾏号=LOOKUP(2,1/(A1:A20="a"),A1:A20)返回指定⽂本单元格=LOOKUP(2,1/(A1:A20="a"),ROW(A1:A20))返回指定⽂本单元格的⾏号=LOOKUP(2,1/(1-ISBLANK(A1:A20)),A1:A20)返回⾮空单元格=LOOKUP(2,1/(1-ISBLANK(A1:A20)),ROW(A1:A20))返回⾮空单元格的⾏号=LOOKUP(2,1/((A1:A20<>0)*ISNUMBER(A1:A20)),A1:A20)返回不为零⾮空单元格=LOOKUP(2,1/((A1:A20<>0)*ISNUMBER(A1:A20)),ROW(A1:A20))返回不为零⾮空单元格的⾏号注1:为了确保公式通⽤,第1个参数始终⽐第2个⼤,所以上⾯的公式第⼀个参数都是2。

利用VBA查找excel中一行某列第一次不为空与最后一列不为空的列数

利用VBA查找excel中一行某列第一次不为空与最后一列不为空的列数

利⽤VBA查找excel中⼀⾏某列第⼀次不为空与最后⼀列不为空
的列数
昨⽇同事有需求,想知道每个商品第⼀次销售的⽉份,以及最后⼀次销售的⽉份. 本想通过什么excel函数来解决,但是找了半天也没找到合适的,最后还是通过VBA来解决吧.
使⽤⽅法:
Excel⼯具-宏-Visual Basic编辑器在左侧栏中点右键,
插⼊-模块
然后输⼊:
1Function Last0(ByVal Int_Row As Integer) As Integer
2 Last0 = 14
3Do While Cells(Int_Row, Last0) = ""And Last0 >= 3
4 Last0 = Last0 - 1
5Loop
6
7End Function
8
9 '这⾥需要注意的是函数的返回值貌似是变量必须与⽅法名⼀致很奇葩的要求....
10Function Frist0(ByVal Int_Row As Integer) As Integer
11 Frist0 = 3
12Do While Cells(Int_Row, Frist0) = ""And Frist0 <= 255
13 Frist0 = Frist0 + 1
14Loop
15If Frist0 > 255Then
16 Frist0 = 8888
17End If
18End Function
然后在单位格中可以直接引⽤
例如:=Frist0(4) 返回值即为4⾏中第⼀个不为0的单元格列号,
如果函数返回8888,表明这⾏没有数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

获取excel多列区域最后非空单元格行数(VBA5练习
2)[Excel精英培训网]
再出1道有些小弯弯的题目, 有两小问,大家做后可以跟贴上传答案. (有基础的学员建议不要用循环来做)
要求:
第1问: 计算A:L列最下方一个含非空内容的行数.(用学过的知识做出来)
第2问: 如何计算A:F列最下方一个非空单元格行数。

注:
1、第二题为选做题,留给有VBA基础的学员,如果不用循环需要用到两个个未提及到的单元格处理技巧。

2、每题有两种最简单的方法,看大家能否做出
此主题相关图片如下:。

相关文档
最新文档