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 |
… | … |