Excel 如何用公式获得一列中最后一个有数值的单元格的行号?

如图示,B列中的数据是断断续续的,在A列中任一单元格,返回B列中最后一个有数据的单元格的行号(是要它的行号,不是它的内容);

比如要在A20中返回B列中最后一个有数据的单元格B12的行号12,最终效果如图。

B列中最后一个有数据的单元格不是固定某个的哦,因为在B列中总时不时填入断断续续的新数据。

那么在本例中,单元格A20中的公式要怎么写呢?顺便请把用到的函数的功能简单给我说一下哈。我好理解下实现原理。
谢谢大家!

1、选中任意单元格,输入:=ROW()即返回该公式所在行的行号。这个特性可以用来编制表格的自动序号。

2、选中任意单元格,输入:=ROW(引用单元格),返回被引用单元格所在的行号。这个特性一般用其他函数的参数,比如说:=SMALL(区域,ROW(A1)),随着公式的下拉可以顺序返回1,22,3。

3、同ROW函数一样,COLUMN函数可以返回列号。

4、同ROW函数类似,ROWS函数可以返回一个区域的行数。

5、同COLUMN函数类似,COLUMNS函数可以返回一个区域的列数。

6、第五:获取单元格地址。其中的row_num和column_num分别输入数字,即指定的第多少行、第多少列。abs_num如果是1或者省略就表示绝对引用,如果是2表示绝对行号,相对列标,如果是3表示相对行号,绝对列标,如果是4表示相对引用。常用的只有前面3个参数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-03

假设数据在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)

第2个回答  2014-02-05
会用VBA吗?教你自定义一个函数如何?
一、按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的入门吧。本回答被网友采纳
第3个回答  2014-02-05
给你个最简单的吧,如果都是数字的话

输入 =MATCH(4^8,B:B)追问

看来能行耶,灰长谢谢你!能告诉我这是为什么吗?嗯……我是说原理,想知道哇。这个函数是干什么用的,为什么这样写等等。

追答

不好意思,刚才在回答其它朋友的题,没注意来看看。

MATCH 是查找引用函数,找到相应值所在的单元格位置。第几行或第几列,只能是单行或单列中查找。

4^8 就是 4的8次方 =65536
你直接写成65536也行,或着99999或者大点的数字

B:B 就是在B列查找……

=MATCH(4^8,B:B) 就是在B列倒着查找65536的近似值(只要找到一个数字就返回所在的行号),所以上面说的,你写其它数字也行,大点的数字,希望我表达清楚了……

追问

结合你讲的,自己再查了下match函数的帮助,明白了一点点吧。非常谢谢你啊!

本回答被提问者采纳
第4个回答  2018-10-01
直接用MATCH公式,或者用VBA编程,皆可
相似回答