【FineBI学习打卡】DAY88 如何高效计算员工连续上班天数?

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

第88天知识点:分段计算累计值

 

如何计算员工连续上班的天数?

下面是用到的数据表。

这是我们想要的结果。

可以看到,只要【是否上班】字段出现0,连续上班天数就从1开始重新累计。

累计值在FineBI中好计算,可这种分段计算累计值,该怎么做呢?

Excel制作步骤

没有思路?没关系,我们先来看看这个问题在Excel中是如何处理的?

1、首先,计算累计上班天数

在C2单元格中输入公式:SUM($B$2:B2),向下拖拽即可。

但这里的计算结果没有考虑分段重新累计的问题。

所以,来到第二步。

2、找到离当前日期最近的上一次未上班时间对应的累计值。

3、最后,用累计上班天数减去上一次未上班时对应的累计值,就可以计算出员工连续上班天数。

这里,关键的一步就是如何找到上一次未上班时对应的累计值

将表中的日期和所有的未上班日期去一一对应,找到日期在自己之前且离自己最近的一个未上班日期对应的值,就是上一次未上班时对应的累计值。

这里,有2个关键的判断:

日期在自己之前

        且

日期离自己最近

为了方便大家理解,这里举个具体的例子。

以2024/11/20这一天来举例。

2024/11/20和第一张图中标蓝的几个未上班日期去对应,可以发现,在自己之前的日期有2024/11/4、2024/11/5、2024/11/14、2024/11/16这4个日期,但是离自己最近的是2024/11/16,所以它对应的上一次未上班时对应的累计值就是2024/11/16这一天对应的累计上班天数12。

分析到这儿,其实答案就呼之欲出了。

FineBI制作步骤

回到FineBI中,我们来看一下具体的操作步骤。

1、新增汇总列,计算【累计上班天数】

结果如下:

2、新增汇总列,计算每一个日期对应的【排序】

结果如下:

 

PS:这里为什么要计算排序?

因为如果出现过0,也就是员工没上班,那么该日期对应的【累计上班天数】一定是小于等于【排序】的,当数据量特别多,我们无法通过肉眼去观察的时候,就可以用这种方式去辅助进行判断。

3、新建一个数据集:未上班日期汇总表

保留【是否上班】字段为0的所有日期及其对应的【累计上班天数】

4、未上班日期汇总表新增公式列【辅助列】

输入1(这里可以输入任意值,主要为了后面做合并依据用)

5、所有日期数据表新增公式列【辅助列】

输入1(这列的值与上一步一致即可)

结果如下:

6、左右合并

将每一个值为0的日期及对应累计上班天数匹配过来

结果如下:

7、过滤

【累计上班天数=排序】或者【累计上班天数<排序】但【日期>=日期1】

结果如下:

PS:这里为什么进行过滤?

如果跳过0从1开始累计,要减去的肯定是日期小于当前日期的临近的0对应的累计值,所以只保留【累计上班天数=排序】或者【累计上班天数<排序】但【日期>=日期1】的值即可。

接下来,只需要找到最近的一个值为0的日期即可。

8、计算时间差

结果如下:

9、新增汇总列,计算最小时间差

结果如下:

10、过滤

当时间差=最小时间差时,就是满足条件的值

结果如下:

11、新增公式列,计算【连续上班天数】

IF(累计上班天数<排序,累计上班天数-累计上班天数1(即上一次未上班日期对应的累计值),累计上班天数)

结果如下:

这样就能得到我们想要的效果了。

过程看似复杂,主要还是在于理解其中的逻辑关系及每个步骤的目的。

最后,留一个小问题给大家思考:

如何计算不同员工连续上班天数?

也就是在本文案例的基础上增加一个员工维度,感兴趣的小伙伴可以自己动手试试看。

如果上面的问题可以解决,那么恭喜你,你已经完全掌握如何在FineBI中分段计算累计值了。

 

希望今天的内容能对你有所启发~

分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0回帖数 1关注人数 190浏览人数
最后回复于:前天 09:57

返回顶部 返回列表