分享

怎样提取最后一列非空单元格内容?

 sunnynie2021 2021-04-27

    如图1,有多列数据,怎样提取最后一列非空单元格内容,比如,第2行最后一列非空单元格是B2,就把B2的内容提取出来,第5行最后一列非空单元格是A5,当行数很多的时候,一个个手工提取就非常慢,怎样快速提取呢?用函数Lookup轻松实现。

图1

在D列输入公式=LOOKUP(2,1/(A2:C2<>""),A2:C2)

我们先来看看lookup的基本语法,第1个参数lookup_value是要查找的值,第2个参数lookup_vector是在该数值值中查找,第3个参数result_vector返回该数组值中相对位置的值.如图2。如果是找不到要查找的,会从后向前查找到比它小的值,如果找不到,则返回错误值。

注意:

 1、查找的区域必须按升序排列。

...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE

 2、查找的区域可以有错误值,但在查找时会被忽略

图2

我们再来看这个公式分解:

1、以第2行公式为例,公式A2:C2<>"" ,返回的是数组true,true,false,

选中公式标红的部分按F9可以看到;

2、1/(true,true,false),得到数组(1,1,#DIV/0!)

选中公式中标红的部分按F9可以看到;

3、在数组(1,1,#DIV/0!)中查找比第一个参数2,查找不到2,返回比2小的值,错误值可以忽略,所以返回的是最后的1对应的B2单元格内容。

关于Lookup函数有些通用的公式返回对应的内容,汇总如下:

A1:A20存放着数字、文本、错误值等,下列公式将返回:
=LOOKUP(9E+307,A1:A20)返回数值
=LOOKUP(9E+307,A1:A20,ROW(A1:A20))返回数值对应的行号
=LOOKUP(2,1/(A1:A20<>""),A1:A20)返回非空单元格
=LOOKUP(2,1/(A1:A20<>""),ROW(A1:A20))返回非空单元格的行号
=LOOKUP(2,1/(A1:A20<>0),A1:A20)返回非零单元格
=LOOKUP(2,1/(A1:A20<>0),ROW(A1:A20))返回非零单元格的行号
=LOOKUP(2,1/(A1:A20="a"),A1:A20)返回指定文本单元格
=LOOKUP(2,1/(A1:A20="a"),ROW(A1:A20))返回指定文本单元格的行号
=LOOKUP(2,1/(1-ISBLANK(A1:A20)),A1:A20)返回非空单元格
=LOOKUP(2,1/(1-ISBLANK(A1:A20)),ROW(A1:A20))返回非空单元格的行号
=LOOKUP(2,1/((A1:A20<>0)*ISNUMBER(A1:A20)),A1:A20)返回不为零非空单元格
=LOOKUP(2,1/((A1:A20<>0)*ISNUMBER(A1:A20)),ROW(A1:A20))返回不为零非空单元格的行号

注1:为了确保公式通用,第1个参数始终比第2个大,所以上面的公式第一个参数都是2。

注2:9E+307表示Excel中最大的数值,我们在Excel中按F1,输入“规范与限制”,可以看到Excel 最大正数如图3:

图3

今天的分享到此结束,如果想看更多历史文章,请从菜单所有文章查看。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多