求Google Sheets公式:生成员工假期每日序列清单
Google Sheets 拆分员工假期日期为每日记录公式
假设你的原始数据位于A:C列(A列姓名,B列假期起始日,C列假期结束日),表头在第1行,数据从第2行开始,使用以下公式可以直接生成按要求排列的每日记录:
=QUERY( FLATTEN( BYROW(A2:C, LAMBDA(row, IF(INDEX(row, 1)="",, REPT(INDEX(row, 1)&"|", INDEX(row, 3)-INDEX(row, 2)+1) & TEXT(SEQUENCE(INDEX(row, 3)-INDEX(row, 2)+1, 1, INDEX(row, 2)), "dd/mm/yy") ) )) ), "SELECT SPLIT(Col1, '|') WHERE Col1 IS NOT NULL", 0)
公式说明
BYROW(A2:C, LAMBDA(row, ...)):逐行遍历A2:C的员工数据INDEX(row, 3)-INDEX(row, 2)+1:计算当前员工的假期总天数REPT(姓名&"|", 天数):重复姓名(带分隔符)对应假期天数,保证每个日期都能匹配到姓名SEQUENCE(...):生成从起始日到结束日的连续日期序列,用TEXT统一格式为dd/mm/yyFLATTEN:将多行的日期序列合并为一维数组QUERY:拆分姓名和日期的分隔符,过滤空行,最终输出两列结果
注意事项
- 确保B列(FIRST)和C列(LAST)的内容是Google Sheets可识别的日期格式,而非纯文本(若为文本,可通过「数据>数据清洗>转换为日期」处理)
- 如果你的数据范围不是A2:C,直接替换公式中的
A2:C为实际数据范围即可
内容的提问来源于stack exchange,提问作者SSheets
相关产品推荐
相关产品推荐

