Excel 如何用公式获得一列中最后一个有数值的单元格的行号?
比如要在A20中返回B列中最后一个有数据的单元格B12的行号12,最终效果如图。
B列中最后一个有数据的单元格不是固定某个的哦,因为在B列中总时不时填入断断续续的新数据。
那么在本例中,单元格A20中的公式要怎么写呢?顺便请把用到的函数的功能简单给我说一下哈。我好理解下实现原理。
谢谢大家! 展开
1、选中任意单元格,输入:=ROW()即返回该公式所在行的行号。这个特性可以用来编制表格的自动序号。
2、选中任意单元格,输入:=ROW(引用单元格),返回被引用单元格所在的行号。这个特性一般用其他函数的参数,比如说:=SMALL(区域,ROW(A1)),随着公式的下拉可以顺序返回1,22,3。
4、同ROW函数类似,ROWS函数可以返回一个区域的行数。
5、同COLUMN函数类似,COLUMNS函数可以返回一个区域的列数。
6、第五:获取单元格地址。其中的row_num和column_num分别输入数字,即指定的第多少行、第多少列。abs_num如果是1或者省略就表示绝对引用,如果是2表示绝对行号,相对列标,如果是3表示相对行号,绝对列标,如果是4表示相对引用。常用的只有前面3个参数。
假设数据在A列,要查找A列最后一个有数值的单元格行号(中间可能有若干空单元格)
方法1:使用MATCH函数
=MATCH(MAX(A:A)+1,A:A)
如果确定A列含数值的单元格中最大值数字为x,上述公式还可以简化为:
=MATCH(y,A:A)
其中,把y替换为比x大的数字即可(例如:x+1)
方法2:使用LOOKUP函数
=LOOKUP(MAX(A:A)+1,A:A,ROW(A:A))
其实现思路,与方法1类似。
如果确定A列含数值的单元格中最大值数字为x,上述公式还可以简化为:
=LOOKUP(y,A:A,ROW(A:A))
其中,把y替换为比x大的数字即可(例如:x+1)
一、按ALT+F11 调出VBA编辑窗口。
二、在左边树状窗口中,空白处右键,插入->模块,出现“模块1”,双击“模块1”
三、然后在右侧的空白区块内粘贴下列代码:
Public Function rown(lie As String) '定义一个名为rown的函数,括号里的参数lie,表示“列”标
rown = ActiveSheet.Range(lie & "65535").End(xlUp).Row '计算出给出“lie”列最后一个非空单元格的行号
End Function
四、关闭VBA窗口,回到EXCEL窗口
五、用法:在任意的单元格内录入 =rown("B") 就可以得到B列最后一个非空单元格的行号。
刚看到13408942223的答案,经典。建议采纳。学习了。
我的方法,你不妨也试试,算是VBA的入门吧。
输入 =MATCH(4^8,B:B)
看来能行耶,灰长谢谢你!能告诉我这是为什么吗?嗯……我是说原理,想知道哇。这个函数是干什么用的,为什么这样写等等。
不好意思,刚才在回答其它朋友的题,没注意来看看。
MATCH 是查找引用函数,找到相应值所在的单元格位置。第几行或第几列,只能是单行或单列中查找。
4^8 就是 4的8次方 =65536
你直接写成65536也行,或着99999或者大点的数字
B:B 就是在B列查找……
=MATCH(4^8,B:B) 就是在B列倒着查找65536的近似值(只要找到一个数字就返回所在的行号),所以上面说的,你写其它数字也行,大点的数字,希望我表达清楚了……
2018-10-01