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

如何在Google Sheets中将任务日历转为可执行月度任务列表

Google Sheets 任务日历转垂直分组列表方案

核心一次性生成公式

假设你的任务日历数据范围是:B列为任务名称,第3行是年份,第4行是月份,从第5行开始是任务的X标记(可根据实际范围调整),直接用以下公式就能生成目标垂直列表:

=QUERY(
  ARRAYFORMULA(
    FLATTEN(
      IF(
        C5:Z100="X",
        B5:B100&"|"&C3:Z3&"|"&C4:Z4,
        ""
      )
    )
  ),
  "SELECT SPLIT(Col1, '|') WHERE Col1 <> '' LABEL SPLIT(Col1, '|') '任务','年份','月份'",
  1
)

公式拆解

  • IF判断+字段拼接:遍历所有标记区域(C5:Z100),只要单元格是X,就把对应行的任务名(B列)、对应列的年份(第3行)、对应列的月份(第4行)用|拼接成字符串;非X的单元格返回空值
  • FLATTEN转一维:把二维的标记区域转成一维列,所有符合条件的拼接字符串排成一列
  • ARRAYFORMULA批量处理:让公式自动应用到整个数据范围,不用逐行逐列拖拽
  • QUERY拆分+过滤:把拼接的字符串拆分成三列,过滤掉空值,同时设置表头为「任务」「年份」「月份」

最优策略

  1. 动态适配数据扩展:如果后续会新增任务或月份,把固定范围改成动态范围,自动识别数据边界:
    =QUERY(
      ARRAYFORMULA(
        FLATTEN(
          IF(
            C5:INDEX(C:C, COUNTA(B:B))="X",
            B5:INDEX(B:B, COUNTA(B:B))&"|"&C3:INDEX(3:3, COUNTA(3:3))&"|"&C4:INDEX(4:4, COUNTA(4:4)),
            ""
          )
        )
      ),
      "SELECT SPLIT(Col1, '|') WHERE Col1 <> '' LABEL SPLIT(Col1, '|') '任务','年份','月份'",
      1
    )
    
  2. 避免分隔符冲突:如果任务名称里包含|,把公式里的|换成其他不常用的符号(比如^或#),确保拆分正常
  3. 自动同步更新:源数据新增X标记、任务或月份时,结果列表会自动同步,无需重复操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:20:07