
点亮☆星标,不错过精彩分享
日常工作中,有时我们需要在EXCEL的动态不确定的数据中,时刻返回最后一个值,比如流水日记账

随着我们每天新增或者删减数据,明细流水记录可能会很长,最后一行的位置,每天都有变动,可能会超过一个屏幕的范围,有时我们想看最后一行的合计数,就要滚动到最后才能看到。
这个场景下,我们想把最后一行的合计数据,同步到表格前面,就很方便我们阅读数据了。
那如何动态的返回最后一行的位置行号呢?今天我们介绍三种方法!

方法1: 通用万能公式MAX+IF
这是一个数组公式(365/2021) 可直接回车,旧版需要按(Ctrl+Shift+Enter)
=MAX(IF(A:A<>"",ROW(A:A),0))
公式解释:
如果单元格非空,返回对应行号;否则返回0,得到一个「行号 + 0」的数组,再用MAX求数组中的最大值,就可以返回最后一个行号了。
方法二:LOOKUP
=LOOKUP(9^9,ROW(A:A)/(A:A<>""))LOOKUP函数应该说是查找函数的鼻祖,非常强大灵活,只是好像对小白学习难度有点大,所以大家基本上用VLOOKUP,XLOOKUP之类的衍生函数。
这个函数核心是后面的条件判断:
ROW(A:A)/(A:A<>"")非空单元格时(A:A<>"")=1,返回“行号/1=行号”,空单元格返回行号/0=#DIV/0!错误值。这样就形成一个由具体数字行号和错误值组成的一个数组,比如{1,2,3,#DIV/0!,#DIV/0!,6,#DIV/0!.....},再用LOOKUP去找数组中小于等于9^9的最后一个值,就是最后一个行号的数字值了。
方法三、XMATCH
=XMATCH(1,IF(A:A<>"",1,0),0,-1)=XMATCH(TRUE,A:A<>"",0,-1)
这两种写法原理是一样的,都是利用XMATCH反向查找的特性实现的,但是奇怪的是,在XMACH函数中,1和TRUE并不兼容,正常来讲在EXCEL中,TRUE和1都是能兼容的,但在这个函数里,并不兼容。

=XMATCH(查找值, 查找数组, [匹配类型], [搜索模式])四、应用案例
那么,算出了最后一行的行号后,有什么用呢?

现在,我们想把最后一行的结果,动态显示在最前面,就可以用到这个方法了。
由于明细表每天是动态需要用前面介绍的方法先算出最后一行的行号,再返回最后一行的合计数据。
=INDIRECT("f"&MAX(IF(B:B<>"",ROW(B:B),0)))
这里可能会有同学会问,求最后一行位置,用COUNTA函数算B列单元格个个数就行吗?
COUNTA是不严谨的,这个只能统计非空单元格个数,但实际工作中,B列是可能有空单元格的,比如表头有几行是空的,明细表中也可能有空的,这样获取不到最后一行数据的行号。

你学会了吗?
想学习更多EXCEL函数知识,推荐下面这本教程:
#办公软件#办公技巧#wps#officel办公技巧#excel#VBA#函数公式#函数
关注我,学习更多高效办公小技巧!
往期干货文章学习推荐:
Excel输入【任意关键字】都能筛选查询结果!太高级了!怎么做?
Excel【一二三】级下拉菜单怎么做?99%人的只会设置一级,一个教程全讲清楚原理逻辑!
手把手教你用EXCEL手搓一个春晚收视率数据地图?地图根据数据自动变化!
分享高效办公技巧及免费自动化模版,避免以后需要找不到,请您持续关注哦
夜雨聆风