Excel中如何获取某列(行)最后一个非空单元格的值

如题所述

在Excel中我们能够使用数组公式来找到行或列中的最后一个非空单元格。然后再此通过单元格的地址并使用INDIRECT函数就可以获取到此单元格的值。

excel 如何使用数组公式来找到行或列中的最后一个非空单元格
取得一列中的最后一个非空行

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个回答  推荐于2017-11-26
获取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允许输入的最大数值。) 65535(Excel允许输入的最大单个文字。)本回答被提问者采纳
第2个回答  2021-04-08
我们如何知道在Excel中的数据到底有多少行?我想这个问题肯定有很多人特别想知道,因为在我们VBA案例中,经常会用得到最后行号,下面就和大家分享几种方法:

1.使用For循环方法
'定义num储存行号的变量,i循环变量
Dim num, i
'将Excel最大行号赋值给变量
num = Rows.Count
'开始循环并判断,找出最后有值的单元格
For i = 1 To num
If Range("a" & num) <> "" Then
Exit For
End If
num = num - 1
Next
'输出num,也就是得到的行号
MsgBox num
执行后可以正确得到最后数据行行号

不足点:
数据行很少的情况下,循环起来好慢。
2.使用.UsedRange方法
'定义一个储存行号的变量
Dim num
'使用UsedRange获取的行号赋值给num
num = ActiveSheet.UsedRange.Rows.Count
'输出num,也就是得到的行号
MsgBox num
代码执行后可以获取到最后一行行号

不足点:
单元格存在有格式的单元格,就会算上带有格式的单元格,得到的行号就会有问题

3.使用Range().End(xlDown)方法
'定义一个储存行号的变量
Dim num
'使用Range("").End(xlDown)获取的行号赋值给num
num = ActiveSheet.Range("a1").End(xlDown).Row
'输出num,也就是得到的行号
MsgBox num
代码执行后可以获取最后一行行号

不足点:
如何列数据中有空白行,就得出错误的行号

如果最后的数据行被隐藏,也会得到错误行号

4.使用Range().End(xlUp)方法
'定义一个储存行号的变量
Dim num
'使用Range("").End(xlUp)获取的行号赋值给num
num = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row
'输出num,也就是得到的行号
MsgBox num
代码执行后可以获得最后一行数据行号

不足点:
如果整个表格的最后行有数据,就会得到错误行号

如果最后的数据行被隐藏,也会得到错误行号

5.使用Cells.SpecialC