打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
问与答83: 如何从一行含有空值的区域中获取第n个数值?

excelperfect

Q在如下图1所示,在单元格区域G3:L3中有一组分数,但是其间存在空单元格。现在我想在单元格B3F3中使用公式来获取分数,其中单元格B3中是G3:L3中的第1个分数值,即G3中的值45C3中是第2个分数,即H3中的值44,依此类推。如何编写这个公式?

1

(注:这也是在chandoo.org论坛上看到的一个案例,整理在此与大家分享。)

A使用INDEX/SMALL/IF函数组合来解决。

在单元格B3中输入下面的数组公式:

=INDEX($A$3:$L$3,SMALL(IF($G3:$L3<>'',COLUMN($G3:$L3)),COLUMN()-COLUMN($A$1)))

向右拉至单元格F3(注意,输入完后要按Ctrl+Shift+Enter组合键)

先看看公式中的:

IF($G3:$L3<>'',COLUMN($G3:$L3))

得到数组:

{7,8,9,FALSE,11,12}

公式中的:

COLUMN()-COLUMN($A$1)

等于2-1,得到:

1

将上述两个中间结果代入SMALL函数:

SMALL(IF($G3:$L3<>'',COLUMN($G3:$L3)),COLUMN()-COLUMN($A$1))

即:

SMALL({7,8,9,FALSE,11,12},1)

得到:

7

代入INDEX函数,得到:

=INDEX($A$3:$L$3,7)

对于INDEX函数来说,如果省略其参数column_num,则直接取参数array中的第row_num个元素,即G3中的值,结果为:

45

当公式向右拖时,COLUMN()-COLUMN($A$1)的值递增,这样会依次取数组{7,8,9,FALSE,11,12}中第2345小的值,传递给INDEX函数后分别取单元格H3I3K3L3中的值。

也可以省略INDEX函数的参数row_num,此时的公式为:

=INDEX($A$3:$L$3,,SMALL(IF($G3:$L3<>'',COLUMN($G3:$L3)),COLUMN()-COLUMN($A$1)))

效果相同。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
怎样从一列中提取非空单元格内容?
Excel一对多查询
如何用公式实现自动填入满足相应条件的数字?
INDEX MATCH经典组合,从入门到放弃
传说中的万金油公式,值得你拥有
Excel非重复、非空白单元格提取
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服