去除节假日 计算工作日期

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

一、案例说明

 

1、问题背景

已知开始时间,并在子表单里面列出了所有的周末和节假日(联动基础表获取),输入工作日天数,返回在开始日期之后、与该日期相隔指定工作日的某一日期的日期值。

 

2、解决思路

在子表单中列出开始日期之后的每一天,判断当天是否为节假日,之后得出这一天于开始日期之间的工作日天数,将这个工作日天数于主表输入的工作日对比,若天数一致,则返回对应的日期为最终的日期。

 

3、知识库外链

https://t6ixa9nyl6.jiandaoyun.com/sharedoc/21WYRI4Xvt3GRHuk1eQbPK

 

4、应用安装链接

https://jiandaoyun.com/a/6051ba39c53e6d000735e884

 

二、设计说明

 

1、表单及功能说明

计算表:去除节假日及周末后返回对应的工作日日期;

辅助表1:基础联动表,用于子表单序号联动;

辅助表2:休息日基础表,用于联动开始日期当月和下月所有的休息日。

 

2、具体设置

(1)辅助表1

分别在主表和子表单中新建一个数字字段,并在数据管理录入数据。

 

根据输入的最大工作日天数来录入一个固定天数对应的序号记录,比如最大工作日天数为10,考虑加上中间的节假日的情况,可以录入20,如果最大工作日天数为20,可以录入40对应的记录。

 

(2)辅助表2

年月:录入年月,例如202103;

休息日:在子表单中录入这个月的所有休息日;

 

 

 

(3)计算表

 

开始日期、工作日天数:由填写人员手动输入;

 

默认联动辅助:辅助的基础联动表中固定天数录入的是多少,这里就设置默认值为多少;

 

子表单整体:添加右侧的6个字段,并对子表单整体设置数据联动,通过默认联动辅助,将基础联动表中的子表单序号联动到本表中;

 

子表单.日期时间:公式为 DATEDELTA(开始日期(手动输入),子表单.序号)   ,意思是将主表的开始日期依次加上子表单序号显示每一天,(比如开始时间为4月1日,子表单从4月2日开始一直显示到4月21日),目的是为了判断每一行的日期和开始时间相差的工作日天数,判断是否和主表的工作日一致;

 

子表单.是否为休息日:公式为 IF(SEARCH(TEXT(VALUE(子表单.日期时间)),2个月休息日汇总)!=0,1,0)  判断当前这个日期是否可以在2个月休息日汇总里面找到,找到返回1,没找到返回0;

 

不去除休息日的天数差:公式为  IF(子表单.日期时间<=开始日期(手动输入),0,DAYS(子表单.日期时间,开始日期(手动输入)))   意思是如果这条记录的日期小于主表的开始时间,就返回0,否则返回这2个日期的天数差;

 

是否为休息日汇总:公式为 TEXT(子表单.是否为休息日)   意思是将子表单中是否为休息日的数据全部列出,并用逗号隔开,最终效果为1,1,0,0,0这种格式,其中1和0的顺序不定由是否为休息日的公式判断输出0还是1;

 

去除休息日的天数差:公式为  子表单.不去除休息日天数差-SUMPRODUCT(SPLIT(LEFT(是否为休息日汇总,子表单.序号*2),','))  意思是取出当前这条记录之前所有的休息日组合,然后求和,得到休息日的天数和,然后用不去除休息日的天数差扣除总的休息日,得到最终的天数差;

 

子表单最终日期:公式为  IF(子表单.去除休息日天数差==工作日天数(手动输入),子表单.日期时间,)   判断子表单取出休息日的天数差是否等于主表的工作日天数,如果等于,返回子表单的日期,否则返回空;

 

最后工作日:公式为  MIN(子表单.最终日期)  获取子表单最终日期里面最小的那一天,就是在开始日期之后、与该日期相隔指定工作日的那个日期。

 

 

本月休息日明细、下月休息日明细:这2个子表单记录开始时间近2个月的所有休息日期,设置子表单整体联动,通过本月和下月联动休息日基础表;

 

2个月休息日汇总:公式为  CONCATENATE(TEXT(本月休息日明细.日期时间),',',TEXT(下月休息日明细.日期时间))  将2个子表单的休息日组合在一起,用逗号隔开显示;

 

本月:公式为  TEXT(DATE(开始日期(手动输入)),'yyyyMM') 获取开始日期所在年月;

 

下月:公式为  TEXT(DATE(YEAR(开始日期(手动输入)),MONTH(开始日期(手动输入))+1,1),'yyyyMM')  获取开始日期下个月的年月。

 

 

(4)最终效果

编辑于 2021-8-16 15:20
分享扩散:

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

本版积分规则

0回帖数 1关注人数 3418浏览人数
最后回复于:2021-8-16 15:12

返回顶部 返回列表