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

如何用Excel公式将单条时段记录拆分为小时级多条记录?

无需VBA的Excel小时级拆分方案

原数据(示例)

开始日期结束日期开始时间结束时间VolumePrice
9/12/229/12/2210:0012:0050300

期望输出

开始日期结束日期TimeVolumePrice
9/12/229/12/221050300
9/12/229/12/221150300

单条记录拆分公式(Excel 365/2021 动态数组支持)

假设原数据在A2:F2单元格(A1为表头),在空白区域(如H2)输入以下公式,Excel会自动溢出生成所有小时行:

=LET(
    总小时数, HOUR(D2)-HOUR(C2),
    行序列, SEQUENCE(总小时数),
    HSTACK(
        REPT(A2,总小时数),
        REPT(B2,总小时数),
        HOUR(C2)+行序列-1,
        REPT(E2,总小时数),
        REPT(F2,总小时数)
    )
)

公式说明:

  • HOUR(D2)-HOUR(C2):计算开始到结束的小时跨度,确定需要生成的行数
  • SEQUENCE(总小时数):生成从1到小时数的序列,用于计算每个时段的小时数
  • REPT(单元格,总小时数):重复日期、成交量、价格数据,匹配小时行数量
  • HSTACK:将各列数据横向合并成完整的小时级记录

多条记录批量拆分公式

如果有多条记录(如A2:F10),用以下公式可一次性处理所有数据并自动添加表头:

=LET(
    数据区域, A2:F10,
    处理单条, LAMBDA(x,
        LET(
            开始日期, INDEX(x,1),
            结束日期, INDEX(x,2),
            开始时间, INDEX(x,3),
            结束时间, INDEX(x,4),
            成交量, INDEX(x,5),
            价格, INDEX(x,6),
            小时数, HOUR(结束时间)-HOUR(开始时间),
            IF(小时数>0,
                HSTACK(
                    REPT(开始日期,小时数),
                    REPT(结束日期,小时数),
                    HOUR(开始时间)+SEQUENCE(小时数)-1,
                    REPT(成交量,小时数),
                    REPT(价格,小时数)
                ),
                ""
            )
        )
    ),
    结果, BYROW(数据区域,处理单条),
    VSTACK({"开始日期","结束日期","Time","Volume","Price"},TOCOL(结果,3))
)

公式说明:

  • BYROW(数据区域,处理单条):遍历每条原始记录,调用自定义函数处理
  • TOCOL(结果,3):将分散的结果合并成连续的列,过滤空值
  • VSTACK:将表头和处理后的结果纵向合并,形成完整的输出表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:10:31