Google Sheets:给定总数与时间间隔,按30分钟拆分分配的公式咨询
Google Sheets实现时间分段与数值分配的公式
前提假设
假设:
- 总数放在单元格
A1 - 时间间隔的开始时间放在
B1 - 时间间隔的结束时间放在
C1
步骤1:生成30分钟时间分段
用SEQUENCE函数生成完整的30分钟间隔序列,公式如下:
=SEQUENCE(ROUNDUP((C1-B1)*1440/30), 1, B1, 30/1440)
公式说明:
(C1-B1)*1440:把时间间隔转换成总分钟数(Google Sheets中1代表1天,1天=1440分钟)ROUNDUP((C1-B1)*1440/30):计算需要拆分的30分钟分段数,向上取整确保覆盖所有时间(哪怕最后一段不足30分钟也保留)30/1440:表示每次递增30分钟(转换成天的单位)
步骤2:为每个分段分配数值(平均分配)
如果要直接生成「时间分段+对应数值」的组合结果,用数组公式一次性完成:
=ARRAYFORMULA( IF(SEQUENCE(ROUNDUP((C1-B1)*1440/30))="", "", { SEQUENCE(ROUNDUP((C1-B1)*1440/30), 1, B1, 30/1440), A1/ROUNDUP((C1-B1)*1440/30) } ) )
公式说明:
ARRAYFORMULA:让公式批量处理生成数组结果A1/ROUNDUP(...):将总数平均分配到每个30分钟分段中- 大括号
{}:将时间序列和数值序列合并成两列的结果
非平均分配(按实际时长占比)
如果最后一段不足30分钟,需要按实际时长占总时长的比例分配数值,可用以下公式:
=ARRAYFORMULA( IF(SEQUENCE(ROUNDUP((C1-B1)*1440/30))="", "", { SEQUENCE(ROUNDUP((C1-B1)*1440/30), 1, B1, 30/1440), A1*(MIN(B1+(SEQUENCE(ROUNDUP((C1-B1)*1440/30))*30/1440), C1)-B1-(SEQUENCE(ROUNDUP((C1-B1)*1440/30))-1)*30/1440)/(C1-B1) } ) )
内容的提问来源于stack exchange,提问作者Kiruthika Vivekhanand
相关产品推荐
相关产品推荐

