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

求助:如何在Google Sheets中自动生成按日期重复的员工工时表

Google Sheets 每日员工工时表格整合方案

需求说明

制作Google Sheets表格,用于记录指定日期范围(通常为一周)内员工每日工时。要求每个日期下自动列出所有员工姓名,并预留工时填写位置,即员工姓名需按日期数量重复显示,最终呈现为「每日-对应员工」的表格形式。

已完成的基础公式

  • 自动生成日期:=ARRAYFORMULA(TO_DATE(SEQUENCE(D2, 1, E2, 1))),从起始日期E2生成D2天的日期序列
  • 自动生成星期:=ARRAYFORMULA(switch(WEEKDAY(SEQUENCE(D2, 1, E2, 1)), 1, "Sunday", 2, "Monday", 3, "Tuesday", 4, "Wednesday", 5, "Thursday", 6,"Friday", 7, "Saturday")),对应日期生成星期文本
  • 引用员工姓名:=ArrayFormula(E5:INDIRECT("E"&ROW(E5)+D5)&{""}),通过间接引用获取完整员工列表

现存问题

无法将上述内容整合为目标表格,尝试过相关教程及数组扁平化方法后,结果仅能实现日期、星期、员工名单各自单列显示,不符合「每日对应员工」的排版需求。

整合解决方案

使用以下公式可直接生成符合要求的表格(假设从A1单元格开始输入):

=ARRAYFORMULA(
  LET(
    days, SEQUENCE(D2,1,E2,1),
    dates, TO_DATE(days),
    weeks, SWITCH(WEEKDAY(days),1,"Sunday",2,"Monday",3,"Tuesday",4,"Wednesday",5,"Thursday",6,"Friday",7,"Saturday"),
    staff, E5:INDIRECT("E"&ROW(E5)+D5-1),
    staff_count, COUNTA(staff),
    date_repeat, FLATTEN(SPLIT(REPT(dates&"|",staff_count),"|")),
    week_repeat, FLATTEN(SPLIT(REPT(weeks&"|",staff_count),"|")),
    staff_repeat, FLATTEN(SPLIT(REPT(JOIN("|",staff)&"|",D2),"|")),
    VSTACK(
      {"日期","星期","员工姓名","工时"},
      HSTACK(date_repeat, week_repeat, staff_repeat, IFERROR(SEQUENCE(D2*staff_count,1)/0,""))
    )
  )
)

公式逻辑说明

  1. 用LET定义变量简化结构,分别存储日期序列、格式化日期、星期文本、员工列表及员工数量
  2. 通过REPT+SPLIT+FLATTEN组合实现:
    • 每个日期/星期重复显示,次数等于员工总数
    • 员工列表重复显示,次数等于日期天数
  3. 用VSTACK添加表头,HSTACK合并所有列,工时列通过IFERROR生成空值区域,用于手动填写工时

注意事项

  • 确保单元格对应关系:D2为日期天数,E2为起始日期,D5为员工总数,E5及以下为员工姓名列表
  • 若需动态识别员工数量,可将公式中D5替换为COUNTA(E5:E),同时修改员工引用部分为E5:INDIRECT("E"&COUNTA(E5:E)+4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:19:51