前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel公式练习81:提取不为零的数值

Excel公式练习81:提取不为零的数值

作者头像
fanjy
发布2021-02-05 14:40:55
5.7K0
发布2021-02-05 14:40:55
举报
文章被收录于专栏:完美Excel完美Excel

本次的练习是:在工作表的第1行中有一些数值数据,其中有些数据为0,现在要使用公式将不为0的数据提取出来并放置在工作表第2行,如下图1所示。

图1

要求在单元格A2中输入公式,然后拖放复制该公式至单元格H2。

先不看答案,自已动手试一试。

解决方案

下面是我编写的一个数组公式。

在单元格A2中输入数组公式:

=IFERROR(INDEX(A1:H1,1,SMALL(IF(A1:H1=0,"",COLUMN(A1:H1)),COLUMN(A1))),"")

拖至单元格H2。

解析

公式中:

IF(A1:H1=0,"",COLUMN(A1:H1))

用来获取非零数值所在的列号,结果为:

{1,"",3,"",5,"",7,""}

然后,使用SMALL函数来根据COLUMN函数的值获取相应的列号值,对于列A,公式中的SMALL函数解析为:

SMALL({1,"",3,"",5,"",7,""},1)

结果为:

1

传递给INDEX函数,得到:

INDEX(A1:H1,1,1)

结果为单元格A1中的值:

1

为了加深理解,我们再来看看单元格D4中的公式:

=IFERROR(INDEX(A1:H1,1,SMALL(IF(A1:H1=0,"",COLUMN(A1:H1)),COLUMN(D1))),"")

转换为:

=IFERROR(INDEX(A1:H1,1,SMALL({1,"",3,"",5,"",7,""},COLUMN(D1))),"")

转换为:

=IFERROR(INDEX(A1:H1,1,SMALL({1,"",3,"",5,"",7,""},4)),"")

转换为:

=IFERROR(INDEX(A1:H1,1,7),"")

结果为单元格G1中的值:

4

这里,使用IFERROR函数避免找不到值时显示错误值。

如果使用Office365,还可以使用FILTER函数来实现。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档