拆分开始-结束 的每一天

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

一、案例说明

1、问题背景

在子表单中录入开始时间和结束时间,可能会录入多条,需要在第二个子表单中将每一天都显示出来。

2、解决思路

在录入表中计算出开始和结束的天数差+1得到重复次数,然后将开始时间重复显示并用逗号隔开,以背景中的截图为例,显示为20210401,20210401,20210401,然后通过数据联动关联出天数集合,为1,2,3,重复次数为几,天数集合就显示到几,然后将开始时间集合和天数集合显示到子表单2中,每一条记录对应分别在开始时间上加上1天、2天、3天,这样就可以得到每一天的日期了。

3、知识库外链

https://t6ixa9nyl6.jiandaoyun.com/sharedoc/15BzE0ELtkxJrVd3BJL9ob

4、应用安装链接

https://jiandaoyun.com/a/606ea2ab167b14000701069b

二、设计说明

1、表单及功能说明

拆分开始-结束的每一天:数据录入表,录入开始和结束时间,自动拆分显示每一天;

天数集合基础表:录入重复次数对应的天数集合;

序号基础表:录入天数对应的子表单序号。

2、具体设置

(1)天数集合基础表

表单中添加数字和文本字段,然后对应录入数据,开始时间和结束时间天数差最大是多少,这里就要录到多少。

(2)序号基础表

在主表和子表单中分别添加一个数字,并录入对应的基础数据,多条记录的天数差合计最大有几天,这里就要录入到几,比如每条记录天数差最多为10天,那这里就要录入到20。

(3)拆分开始-结束每一天

开始时间、结束时间:手动录入;

重复次数:公式为  DAYS(日期录入.结束时间,日期录入.开始时间)+1  意思是获取天数差;

开始时间集合:公式为  REPT(CONCATENATE(TEXT(DATE(日期录入.开始时间),'yyyyMMdd'),','),日期录入.重复次数)  通过rept函数重复显示开始时间,并用逗号隔开;

天数集合:设置数据联动,通过重复次数联动天数集合基础表。

开始时间集合汇总:公式为  CONCATENATE(日期录入.开始时间集合)  将日期录入子表中多条记录的开始时间集合汇总在一起,通过逗号隔开显示;

天数汇总:公式为  TEXT(日期录入.天数集合)  将日期录入子表中多条记录的天数集合汇总在一起,通过逗号隔开显示;

天数:COUNT(SPLIT(天数汇总,','))  获取天数汇总里面的数字个数;

日期显示子表单:对这个子表单设置整体联动,通过天数联动序号基础表中的序号;

开始时间文本:公式为  SPLIT(开始时间集合汇总,',')[日期显示.序号-1]  通过序号获取开始时间集合汇总中的每一个日期;

天数:公式为  SPLIT(天数汇总,',')[日期显示.序号-1]  通过序号获取天数汇总中的每一个天数;

最终日期:公式为  DATE(VALUE(LEFT(日期显示.开始时间文本,4)),VALUE(MID(日期显示.开始时间文本,5,2)),VALUE(RIGHT(日期显示.开始时间文本,2))+日期显示.天数-1)  用开始时间文本加上天数,得到最终的日期,并转换成日期格式。

分享扩散:

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

本版积分规则

0回帖数 1关注人数 1442浏览人数
最后回复于:2022-2-17 16:09

返回顶部 返回列表