10.9 有关工作日序列的计算

 

列出两个日期之间的工作日序列。
列出从 2020/04/27 到 2020/05/08 区间内每个工作日值班的人员名称。考勤表部分内容如下:

ID Date Name
1 2020/04/27 Emily
2 2020/04/28 Emily
3 2020/04/28 Johnson
4 2020/04/29 Emily
5 2020/04/30 Johnson

函数 workdays(b,e,h) 计算日期 b 和日期 e 之间的工作日序列,包含 b 和 e。h 是 (非) 假日序列,即 h 中成员若非周末则是假日,是周末则非假日,若为周末时按调休计算,调为工作日。

脚本:

A
1 [2020/04/27,2020/05/08]
2 =workdays(A1(1),A1(2),[date(“2020/05/01”)])
3 =T(“Duty.txt”)
4 =A3.align@a(A2, Date)
5 =A4.new(~.Date:Date, ~.(Name).concat@c():Names)

A1 定义起始日期
A2 workdays() 函数计算区间内的工作日,去除节日 5 月 1 日
A3 导入值班表
A4 值班表按工作日序列对齐分组,每组匹配全部记录
A5 创建序表,每组的值班人员姓名用逗号连接

运行结果:

Date Names
2020/04/27 Emily
2020/04/28 Emily,Johnson
2020/04/29 Emily