Excel公式:查找最后一行非空单元格并返回行号、及公式解释

假设要显示表格A列最后一行非空单元格所在行号,公式如下:

=INDEX(MAX((A:A <>"")*ROW(A:A)),1)

其中,

  • (A:A <>"") 返回一个由 TRUE 和 FALSE 组成的数组,表示 A 列中哪些单元格是非空的。true值为1,false值为0。
  • ROW(A:A) 返回一个由行号组成的数组;
  • (A:A <>"")*ROW(A:A) 返回两个数组的乘积,数据类型依然为数组。其中,非空行对应的数值为实际行号;空行对应的数值为 0(false值为0)。
  • MAX((A:A <>"")* ROW(A:A)) 返回数组中的最大值,本例中即为最大非空单元格所在行号。依然是数组类型。
  • INDEX(MAX((A:A <>"")* ROW(A:A)),1) 取出数组中的这个唯一值。

示例如下:
假若有这样一个表
在这里插入图片描述

第6行为空(行数含标题行)。

公式=A:A<>""=ROW(A:A)会返回2个数组。第一个数组存储是否空行判断的布尔值,第二个数组是行号。

我们可用index可以查看数组的值。

公式:=INDEX(array,row_num,[column_num])

例如,查看A:A<>""返回数组的值:

公式数值
=INDEX((A:A<>“”),1)TRUE
=INDEX((A:A<>“”),2)TRUE
=INDEX((A:A<>“”),3)TRUE
=INDEX((A:A<>“”),4)TRUE
=INDEX((A:A<>“”),5)TRUE
=INDEX((A:A<>“”),6)FALSE
=INDEX((A:A<>“”),7)TRUE

同理,查看其他数组的值如下:

=A:A<>""=ROW(A:A)=A:A<>""*ROW(A:A)
TRUE11
TRUE22
TRUE33
TRUE44
TRUE55
FALSE60
TRUE77

第6行为空行,
因此,第一列判断是否空行显示false;
第二列,显示的是行号,行号为6;
第三列,是第一列和第二列的乘积。因为false值为0,和行号的乘积也为0.

第7行后均为空行,因此第7行之后也全为0.

即最大行号为7.

MAX((A:A <>"")* ROW(A:A))将取其最大值,即7。

INDEX(MAX((A:A <>"")* ROW(A:A)),1)返回行号,为7.
excel中显示如下:
示例表格


附:

最后这一步,网上很多文章用的是SUMPRODUCT,也可以,但意思有别。

官方的SUMPRODUCT函数示例:

本示例使用 SUMPRODUCT 返回给定项和大小的总销售额:
(img-YkUxtiRG-1689820599828)(excel小技巧.assets/1acbe524-c074-46da-9707-ef3f8ffb84ba-1689813199005-3.jpg)

SUMPRODUCT 匹配项 Y/大小 M 的所有实例并求和,因此对于此示例,21 加 41 等于 62。

参考:SUMPRODUCT 函数 - Microsoft支持

对于max函数之后的数组中只有一个值,因此sumproduct求和数组中的值,最终的结果是一样的。

只是初看sumproduct这个函数,可能会疑惑此处sum的是什么东西呢。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值