[已解决]实现工厂自动排班功能

新人帖
2021-6-23 10:43:27
38496
功能描述比如工厂现有3个班组(ABC),每个班组一天上班时间是12小时,分为早班和晚班,设置起始日期05-24的上班班组是B, 连续上班2天,那么手动排班的的顺序(BCABC....排列)如下:
        05-24     05-25     05-26     05-27     05-28     05-29       05-30       05-31      06-01     06-02
早        B            B             A            A            C             C              B              B             A             A
晚        C            C             B            B            A             A              C              C             B             B         。。。
这个通过云表怎么实现??

PS附加:
排班日期、工厂班组(A、B、C),上班班次(早、中、晚)、起始班组、连续上班天数都是不固定


Prex已获得悬赏 3 云币

最佳答案

思路都给你了,剩下的就是灵活去运用函数和公式去实现: . 只设置了早晚班,早中晚的情况,自己去实现: 早班表达式:IF( 求余数( (本表单.排班明细.间隔天数 + 本表单.换班周期 *3) , 本表单.换班周期 * 3 )< ...
+11

最近谁赞过

收藏
6 条回帖
Prex云道2021-6-23 14:28:35
本帖最后由 liu_lijian1 于 2021-6-23 14:32 编辑

按照你的描述,主要还是找规律,你按规律去设定,就是简单的加减法了。
你在排班时,肯定也是排未来指定日期内的班次,那么指定起止日期来排班。
开始日期:设定好开始日期的白班班组和晚班班组(假如设定:AB),就可以直接去自动累加计算了。
根据间隔天数,去自动更新班组:间隔天数除以6的余数0和余数为1, 白晚班就是AB
                                                      间隔天数除以6的余数2和余数为3, 白晚班就是BC
                                                     间隔天数除以6的余数4和余数为5, 白晚班就是CA
如果你是3天换班,设定开始日期白班夜班班组为:BC
根据间隔天数,去自动更新班组:间隔天数除以9的余数0和余数为1, 白晚班就是BC
                                                      间隔天数除以9的余数2和余数为3, 白晚班就是CA
                                                     间隔天数除以9的余数4和余数为5, 白晚班就是AB

如果搞不定,私信我!
+11

最近谁赞过

神奇的表格云粉2021-6-24 13:56:22
这个步骤可以借鉴分摊法

规律是 前两天相等 那第三天就会变 那就在基本信息表里做三个辅助数据项: 1天前 和 2天前  和 当前是第几天的 “标记”
           因为日期可能没有规律 所以明细 别外做了了个 辅助数项 标记
           那给明细赋值时 可用 IF 去判断   第一两天就等于基本数据里的早班值 ,
           后面就做判断  比如:第3天 就去判断 1天前 和2天前的值 如果不等情况 那就等于“1天前”的值 ,相等那就根据 “1天前“的值 去推出第3天用什么班




图2 和 图3  
明细变了,首先给基本数据表里的 标记 (相当于第几天 )赋值 ,
                其次是给 1天前 和 2天前 赋值




4. 给晚班赋值



5. 得出排班





+10
Prex云道2021-6-24 18:56:15
本帖最后由 liu_lijian1 于 2021-6-24 19:44 编辑

思路都给你了,剩下的就是灵活去运用函数和公式去实现:
.
只设置了早晚班,早中晚的情况,自己去实现:

早班表达式:IF( 求余数(  (本表单.排班明细.间隔天数 + 本表单.换班周期  *3) , 本表单.换班周期  * 3  )<  本表单.换班周期 ,  文本片段(本表单.上班班组,",",1) ,IF(求余数(  (本表单.排班明细.间隔天数 + 本表单.换班周期  *3) , 本表单.换班周期  * 3  ) >= 本表单.换班周期 *2  ,  文本片段(本表单.上班班组,",",2) , 文本片段(本表单.上班班组,",",3)  )  )


晚班表达式:IF( 求余数(  (本表单.排班明细.间隔天数 + 本表单.换班周期  *3) , 本表单.换班周期  * 3  ) <  本表单.换班周期 ,  文本片段(本表单.上班班组,",",2) ,IF(求余数(  (本表单.排班明细.间隔天数 + 本表单.换班周期  *3) , 本表单.换班周期  * 3  )>= 本表单.换班周期 *2  ,  文本片段(本表单.上班班组,",",3) , 文本片段(本表单.上班班组,",",1)  )  )

求余数函数应用:  求余数(被除数,除数)=余数      余数(6,9)=3
除数:就是一个轮班周期,等于  换班天数*3   (找规律:2天一换班,周期就是6天;3天一换班,周期就是9天)
被除数:就是排班日期和开始日期的间隔天数,由于被除数为0(第一天和开始日期的间隔天是0)时,计算错误所以,我们可以把被除数加上一个周期天数就正常了。因此,被除数,等于   间隔天数+换班天数*3

以2天换班为例说明:
当余数<换班天数(1个周期中前面两天):
早班就取:班次中的第1班组(可以用:文本片段函数取值)
晚班就取:班次中的第2班组(可以用:文本片段函数取值)

当余数>=换班天数*2(1个周期中最后两天):
早班就取:班次中的第2班组(可以用:文本片段函数取值)
晚班就取:班次中的第3班组(可以用:文本片段函数取值)

剩下的就是(1个周期中中间两天):
早班就取:班次中的第3班组(可以用:文本片段函数取值)
晚班就取:班次中的第1班组(可以用:文本片段函数取值)
GIF动图当中还取错了,已经按上面思路调整后,是正确的了,没有再重新录GIF图片了


+10
需要登录后才可进行回复 登录

玩转云表从入门到精通
扫码添加微信立即领取

·云表创始人授课文件
·加入社群与培训学习
·切磋云表开发玩法

商务咨询:0756-3335860
客服咨询