You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于起止日期重复列单元格值的Google Sheets公式实现

实现员工休假数据的日期展开与对应字段重复

完整公式方案

直接使用以下公式即可生成包含姓名、休假类型、展开日期的完整表格(假设原始数据范围为B4:D32对应姓名、起始日期、结束日期,E4:E32对应休假类型):

=ARRAYFORMULA(QUERY({
  FLATTEN(IF(DAYS(D4:D32,C4:C32)>=SEQUENCE(1,1000,0), B4:B32, "")),
  FLATTEN(IF(DAYS(D4:D32,C4:C32)>=SEQUENCE(1,1000,0), E4:E32, "")),
  FLATTEN(IF(DAYS(D4:D32,C4:C32)>=SEQUENCE(1,1000,0), C4:C32+SEQUENCE(1,1000,0), ""))
}, "where Col3 is not null", 0))

公式说明

  • 核心逻辑:通过FLATTEN+IF的组合,分别将姓名、休假类型按照每条记录的休假天数重复,同时生成展开的日期序列,最终将三列数据合并为一个完整数组
  • DAYS(D4:D32,C4:C32)计算单条记录的总休假天数,SEQUENCE(1,1000,0)生成0到999的序列,覆盖最多1000天的休假周期;若需要支持更长休假,直接把1000替换为更大数值即可
  • QUERY函数用于过滤日期为空的无效行,参数0表示不包含原始数据的表头;如果需要自动添加表头,可使用带表头的版本:
={"姓名","休假类型","日期"; ARRAYFORMULA(QUERY({
  FLATTEN(IF(DAYS(D4:D32,C4:C32)>=SEQUENCE(1,1000,0), B4:B32, "")),
  FLATTEN(IF(DAYS(D4:D32,C4:C32)>=SEQUENCE(1,1000,0), E4:E32, "")),
  FLATTEN(IF(DAYS(D4:D32,C4:C32)>=SEQUENCE(1,1000,0), C4:C32+SEQUENCE(1,1000,0), ""))
}, "where Col3 is not null", 0))}

使用注意事项

  • 确保公式中的单元格范围(B4:E32)与实际数据范围一致,若数据行数变动,需对应调整范围参数
  • 若存在超过1000天的超长休假,将SEQUENCE(1,1000,0)中的1000替换为更大数值,比如3650可覆盖10年周期

内容的提问来源于stack exchange,提问作者Gitz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:05:27