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

如何按50米间隔拆分START/FINISH列并关联对应SPEED值

解决方案

问题分析

你当前的公式无法完整生成所需结果,核心问题在于:

  • 计算拆分次数时未对小数结果向上取整,导致遗漏超出FINISH的下一个50米节点
  • 未同步生成对应重复的SPEED值

修正后的公式

假设原始数据在A(START)、B(FINISH)、C(SPEED)列,在D列生成INTERVAL,E列生成对应SPEED:

1. 生成INTERVAL列(D2单元格)

=ARRAYFORMULA(FLATTEN(IF(A2:A<>"", FLOOR(A2:A,50) + SEQUENCE(1, CEILING((B2:B - FLOOR(A2:A,50))/50) + 1, 0, 50), "")))
  • FLOOR(A2:A,50):将START向下取整到最近的50米倍数,保证生成的INTERVAL都是50的整数倍
  • CEILING((B2:B - FLOOR(A2:A,50))/50):计算从取整后的起点到FINISH需要拆分的50米段数,向上取整确保覆盖到超出FINISH的下一个50米节点
  • SEQUENCE生成0、50、100...的序列,与取整后的起点相加得到完整的INTERVAL节点

2. 生成对应SPEED列(E2单元格)

=ARRAYFORMULA(FLATTEN(IF(A2:A<>"", C2:C * SEQUENCE(1, CEILING((B2:B - FLOOR(A2:A,50))/50) + 1, 1, 0), "")))
  • 通过SEQUENCE(1, ..., 1, 0)生成全1的序列,与SPEED相乘实现重复对应次数的效果,确保每个INTERVAL节点匹配正确的SPEED

结果验证

针对你的示例数据:

  • 第一行(0,123,20)会生成0,50,100,150,对应20,20,20,20
  • 第二行(123,363,60)会生成100,150,200,250,300,350,400,对应60,60,60,60,60,60,60

若需要避免重复的INTERVAL节点(比如150同时出现在两行结果中),可以额外添加去重逻辑:

=ARRAYFORMULA(UNIQUE(FLATTEN(IF(A2:A<>"", FLOOR(A2:A,50) + SEQUENCE(1, CEILING((B2:B - FLOOR(A2:A,50))/50) + 1, 0, 50), ""))))

再用VLOOKUP匹配对应的SPEED(取每个节点对应的最后一个SPEED值):

=ARRAYFORMULA(VLOOKUP(D2:D, {FLATTEN(IF(A2:A<>"", FLOOR(A2:A,50) + SEQUENCE(1, CEILING((B2:B - FLOOR(A2:A,50))/50) + 1, 0, 50), "")), FLATTEN(IF(A2:A<>"", C2:C * SEQUENCE(1, CEILING((B2:B - FLOOR(A2:A,50))/50) + 1, 1, 0), ""))}, 2, FALSE))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:55:53