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

Google Sheets批量展开日期区间为单日行并关联员工列的公式

Google Sheets 批量生成员工请假单日明细方案

基础场景

  • 原始请假数据存放在名为Input的工作表中,数据结构为:A列=员工姓名、B列=请假起始日期、C列=请假结束日期,第1行为表头,有效数据从第2行开始
  • 核心需求:
    • 将每一段请假的日期区间拆分为独立的单日数据行,每行日期与对应员工姓名绑定
    • 支持批量处理所有员工的多条请假记录,一次性输出全量请假单日明细
  • 原有单条区间填充公式存在明显缺陷:
    =ArrayFormula((TO_DATE(row(indirect("A"&Input!B2):indirect("A"&Input!C2)))))
    
    仅能生成单条请假记录的日期序列,无法同步关联员工姓名,也不支持多行数据批量处理。

实现公式

操作提示:新建一个用于存放输出结果的工作表,将以下公式直接粘贴到新表的A1单元格即可,无需手动下拉填充,Input表新增请假记录后结果会自动更新。

=ARRAYFORMULA(
  LET(
    valid_data, FILTER(Input!A2:C, Input!B2:B<>"", Input!C2:C<>""),
    emp_names, INDEX(valid_data,,1),
    leave_start, INDEX(valid_data,,2),
    leave_end, INDEX(valid_data,,3),
    leave_days, leave_end - leave_start + 1,
    total_output_rows, SUM(leave_days),
    repeated_names, TRIM(TRANSPOSE(SPLIT(REPT(CONCATENATE(emp_names&"|"), leave_days), "|", 1, 1))),
    start_match, VLOOKUP(SEQUENCE(total_output_rows),{SUMIF(ROW(leave_days),"<="&ROW(leave_days),leave_days)-leave_days+1,leave_start},2,1),
    row_offset, SEQUENCE(total_output_rows,1,0)-VLOOKUP(SEQUENCE(total_output_rows),{SUMIF(ROW(leave_days),"<="&ROW(leave_days),leave_days)-leave_days+1,SEQUENCE(ROWS(leave_days),1,0)},2,1),
    single_dates, TO_DATE(start_match + row_offset),
    QUERY({repeated_names, single_dates}, "select * where Col1 is not null label Col1'员工姓名',Col2'请假日期'")
  )
)

输出说明

公式运行后会自动生成带表头的两列结果:

  • 第一列:员工姓名,按对应请假记录的天数自动重复匹配
  • 第二列:请假单日日期,覆盖每段请假区间内的所有自然日

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:12:17