本文将介绍,在考勤请假的场景中,如何实现请假天数自动去除法定节假日和周末,并自动添加周末调休天数,准确计算出实际请假天数,可用于考勤计算、薪资计算等。
1)在「法定日期记录表」中,提前录入当年所有的法定节假日日期,通过函数判断出该日期是否为周末,并添加标记;
2)在「调休日期记录表」中,提前录入当年所有的周末调休日期,并对日期添加标记;
3)在「请假申请表」中,利用 NETWORKDAYS 函数计算出请假开始日期到请假结束日期之间完整的工作日天数,扣除非周六/日的国家假日,再加上需要调休上班的日期,即计算出实际请假天数。
以五一期间的请假为例,已知五一期间法定节假日期为~,调休日期为和。如在~期间请假,则实际请假天数为 9,效果如下:
在学习之前建议安装 请假天数计算 应用模板,本文将按照模板中的示例数据进行讲解。
1)新建「请假申请表」表单,字段设置如下:
字段名称 | 字段类型 |
请假开始时间 | 日期时间 |
请假结束时间 | 日期时间 |
实际请假天数 | 数字 |
子表单行数 | 数字 |
子表单 | 子表单 |
序号 | 子字段-单行文本 |
日期时间 | 子字段-日期时间 |
法定节假日判断 | 子字段-数字 |
调休判断 | 子字段-数字 |
2)新建「法定日期记录表」表单,字段设置如下:
字段名称 | 字段类型 |
日期时间 | 日期时间 |
法定节假日标记 | 数字 |
3)新建「法定日期记录表」表单,字段设置如下:
字段名称 | 字段类型 |
调休日期 | 日期时间 |
调休标记 | 数字 |
4)新建「子表单基础表」辅助表单,字段设置如下:
字段名称 | 字段类型 |
总行数 | 数字 |
子表单 | 子表单 |
序号 | 子字段-单行文本 |
数字 | 子字段-数字 |
法定节假日记录表中,需要提前录入当年所有的法定节假日日期,并判断该日期是否为周末。
1)选中「法定节假日标记」字段,在「字段属性 >> 默认值」处,设置默认值为「公式编辑」,点击下方「编辑公式」:
2)在公式编辑页面,设置「法定节假日标记」的公式为:IF(OR(TEXT(DATE(日期时间),'E')==0,TEXT(DATE(日期时间),'E')==6),0,1),表示当节假日的日期为星期日或星期六时,该字段标记为 0,否则标记为 1。设置好后点击「确定」保存。
3)进入「数据管理」,在表单中录入当年所有的法定节假日日期:
调休日期记录表中,需要提前录入当年所有的调休上班日期,并为该日期添加标记,便于后续计算实际请假日期。
1)选中「调休标记」字段,在「字段属性 >> 默认值」处,设置默认值为「自定义」,在输入框中设置默认值为 1:
2)进入「数据管理」,在表单中录入当年所有的调休日期:
1)在「子表单基础表 >> 数据管理 >> 导入」处导入附件中的示例数据:200行子表单基础表序号全集.xlsx。
2)导入数据时需确认示例数据和表单字段的关联关系如下:
1)进入「请假申请表」表单,选中整个「子表单」,在「字段属性 >> 默认值」处,设置选项为「数据联动」,点击「数据联动设置」:
2)进入数据联动设置页面,设置内容如下:
设置完成点击「确定」。
3)同理,设置「子表单.法定节假日判断」字段的数据联动如下:
设置完成点击「确定」。
4)同样的方法,设置「子表单.调休判断」字段的数据联动如下:
设置完成点击「确定」。
1)进入「请假申请表」,选中「子表单行数」字段,在「字段属性 >> 默认值」处,设置默认值为「公式编辑」,点击下方「编辑公式」:
2)在公式编辑页面,设置「子表单行数」的公式为:DAYS(请假结束时间,请假开始时间)+1,用于计算从请假开始到结束一共多少天,作为子表单的行数。
设置好点击「确定」保存。
3)按照同样的方法,设置其他字段的公式如下:
1)对于表单中的辅助字段「子表单行数」和「子表单」,可以在「字段属性 >> 字段权限」处设置字段为不可见:
2)设置辅助字段不可见后,需在「表单属性 >> 不可见字段赋值」处,设置赋值规则为「始终重新计算」:
效果演示参见本文【1.3 预期效果】。