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

无需VBA:如何用动态数组实现多团队多班次日程循环生成?

解决方案:动态生成跨团队连续日程列表

核心公式(Excel 365/2021 适用)

假设左侧开班数据区域为 A2:C5(团队、班次、开班日期),右侧课程结构区域为 E2:H12(团队、事件、Tstart、Duration),在目标单元格(如J2)输入以下公式:

=TOCOL(BYROW(FILTER(A2:C5,C2:C5<>""),LAMBDA(x,
  LET(
    team,INDEX(x,1),
    batch,INDEX(x,2),
    start_date,INDEX(x,3),
    course, FILTER(E2:H12,E2:E12=team),
    events, INDEX(course,,2),
    t_starts, INDEX(course,,3),
    durations, INDEX(course,,4),
    event_dates, start_date + t_starts,
    HSTACK(
      REPT(team,ROWS(course)),
      REPT(batch,ROWS(course)),
      events,
      event_dates,
      event_dates + durations - 1,
      durations
    )
  ))),3)

公式逻辑拆解

  • FILTER(A2:C5,C2:C5<>""):筛选出所有包含开班日期的有效班次记录
  • BYROW(...,LAMBDA(x,...)):遍历每个有效班次,单独生成对应日程
  • LET(...):定义变量简化公式,提取当前班次的团队、班次号、开班日期,再筛选出该团队的全部课程结构
  • 计算事件时间:event_dates 为事件开始日期(开班日期 + Tstart),event_dates + durations - 1 为事件结束日期
  • HSTACK(...):将团队、班次、事件名称、开始/结束日期、时长合并为完整的日程行
  • TOCOL(...,3):将所有班次生成的二维日程数据扁平化,自动忽略空值,形成连续无间隔的日程列表

使用说明

  1. 手动添加表头:在目标区域首行(如J1:N1)输入「团队」「班次」「事件」「开始日期」「结束日期」「时长」
  2. 调整区域引用:根据实际表格的单元格位置,修改公式中的A2:C5(开班数据)和E2:H12(课程结构)引用范围
  3. 自动溢出:公式输入后会自动向下溢出所有生成的日程,无需手动拖拽或调整行数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:40:34