Excel中如何获取某列(行)最后一个非空单元格的值
3个回答
展开全部
在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来输入这些公式
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来输入这些公式
展开全部
获取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允许输入的最大单个文字。)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我们如何知道在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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询