【FineBI学习打卡】DAY16 获取非空值

楼主
我是社区第1095980位番薯,欢迎点我头像关注我哦~

第16天知识点:如何获取一行中首个和末个非空值?

 

超市的水果区一般会根据季节供应当季的应季水果,比如荔枝一般会在4月-7月大量供应,而冬枣一般会在10月-12月左右供应。针对这些季节性产品,它们的首次销售月份和末次销售月份肯定是不一样的。

那如果想要达到下图的效果,提取每个产品对应的首次销售额及末次销售额,该怎么做呢?

其实对于提取一行中的首个非空值及末个非空值,这种场景还是蛮常见的,那我们先来看一下在Excel中是如何操作的吧。

Excel操作步骤

(1)【首次记录】计算:在G2单元格输入公式:

INDEX(B2:F2,MIN(IF(B2:F2<>"",COLUMN(B2:F2)-1)))

按【CTRL+SHIFT+ENTER】

(2)【末次记录】计算:在H2单元格输入公式:

INDEX(B2:F2,MAX(IF(B2:F2<>"",COLUMN(B2:F2)-1)))

按【CTRL+SHIFT+ENTER】

(3)选中G2、H2区域,向下拖拽将空白区域填满即可

公式解读:

(1)这是一个数组公式,所以输入完公式后必须按住【CTRL+SHIFT+ENTER】才能返回正确结果

(2)以提取A产品对应的首次记录为例,在这里对应G2单元格:

INDEX(B2:F2,MIN(IF(B2:F2<>"",COLUMN(B2:F2)-1)))

这个数组公式包含了四个函数,我们由内向外分别来解释一下作用:

COLUMN(B2:F2)-1:返回B2:F2单元格对应的列数减一,比如B2单元格返回的结果就是1,C2单元格返回的结果就是2,依此类推。

IF(B2:F2<>"",COLUMN(B2:F2)-1):B2:F2<>""表示B2:F2单元格不为空,整个函数的含义就是如果对应单元格不为空,那么就返回上一步的结果,否则返回FALSE。

注意,这里的IF函数只有两个参数,这种形式的IF函数经常应用于求满足条件的最大值和最小值,而返回值FALSE并不等同于0,这一点值得注意。

MIN(IF(B2:F2<>"",COLUMN(B2:F2)-1)):返回上一步结果中的最小值,以A产品为例,B2:F2单元格返回的结果分别为:1,2,3,4,FALSE,所以该步骤返回的结果是1。

INDEX(B2:F2,MIN(IF(B2:F2<>"",COLUMN(B2:F2)-1))):在B2:F2单元格中,返回上一步结果所对应的单元格(也就是B2)中的值,即10。

这就是Excel对应的做法,因为用到数组函数,所以对一部分小伙伴来说应该还是有些难度的。

接下来,我们看看FineBI中的做法。首先,我们先来了解一个新函数:NVL函数,语法非常简单易懂,但提取首个非空值和末个非空值效果却是杠杠的。函数具体用法可参考下方函数笔记:

FineBI操作步骤

(1)上传原始数据表

(2)新增公式列--新增列名【首次记录】--输入公式:NVL(1月,2月,3月,4月,5月)--点击确定。

(3)新增公式列--新增列名【末次记录】--输入公式:NVL(5月,4月,3月,2月,1月)--点击确定。

最终结果如下:

怎么样,是不是非常简单,还很好理解。

不比不知道,一比吓一跳,原来提取一行中的首个非空值和末个非空值还有这么简单的方法。

个人感觉,这一轮FineBI完胜!你觉得呢?

 

今天的学习内容就到这里,感兴趣的小伙伴自己动手试一试吧!

 
分享扩散:
参与人数 +1 F币 +20 理由
苏瑞 + 20 【2024原创内容激励奖励】给你32个赞!

查看全部评分

沙发
发表于 2024-5-31 09:59:17
您好,感谢您的投稿,您此篇文章主要聚焦于非空值的场景需求,使用NVL函数进行实现,阐述了具体的函数使用步骤和操作说明,内容较为完善。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表