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