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

在Google Sheets中识别行内活动B对应时间差并求和

Google Sheets 活动B总耗时计算方案

核心公式(灵活适配多组活动列)

直接在B2单元格输入以下公式,即可自动计算每行中活动B的总耗时,无需手动下拉或添加辅助列:

=BYROW(A2:A, LAMBDA(r, IF(r="",, SUM(
  LET(
    ac_cols, FILTER(COLUMN(1:1), REGEXMATCH(1:1, "Ac.")),
    start_cols, ac_cols-2,
    end_cols, ac_cols+1,
    ARRAYFORMULA(IF(INDIRECT(ADDRESS(ROW(r), ac_cols, 4))="B", INDIRECT(ADDRESS(ROW(r), end_cols, 4))-INDIRECT(ADDRESS(ROW(r), start_cols, 4)), 0))
  )
))))

公式说明

  • BYROW(A2:A, LAMBDA(r, ...)):逐行处理A列的有效数据行,r代表当前处理的行
  • IF(r="",, ...):跳过空行,只对有数据的行计算耗时
  • LET(...):定义变量简化逻辑:
    • ac_cols:自动识别所有表头包含"Ac."的列的列号
    • start_cols:对应活动的开始时间列(Ac.列往前数2列)
    • end_cols:对应活动的结束时间列(Ac.列往后数1列)
  • ARRAYFORMULA(...):批量判断当前行所有Ac.列是否为"B",是则计算对应结束时间与开始时间的差值,否则返回0
  • SUM(...):将当前行所有活动B的耗时差值求和,得到该行总耗时

可选:显示为小时数

如果需要将耗时以小时数(而非时间格式)显示,可在求和部分乘以24:

=BYROW(A2:A, LAMBDA(r, IF(r="",, SUM(
  LET(
    ac_cols, FILTER(COLUMN(1:1), REGEXMATCH(1:1, "Ac.")),
    start_cols, ac_cols-2,
    end_cols, ac_cols+1,
    ARRAYFORMULA(IF(INDIRECT(ADDRESS(ROW(r), ac_cols, 4))="B", INDIRECT(ADDRESS(ROW(r), end_cols, 4))-INDIRECT(ADDRESS(ROW(r), start_cols, 4)), 0))
  )*24
)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 08:53:10