【问题标题】:Divide time column in time spans based on several columns根据几列将时间列划分为时间跨度
【发布时间】:2016-03-01 12:52:39
【问题描述】:

到目前为止,我使用 Excel 的公式处理得很好,所以我可能不需要 VBA 来解决这个问题。

我想根据 O 列中的时间在 V 列中创建时间跨度。时间跨度为:00-05、05-07、07-09、09-15、15-18 和 18-00。到目前为止,我一直在使用公式(第 25 行的示例):

=IF([@Old]="","",IF([@Old]*24<5,"00-05",IF([@Old]*24<7,"05-07",IF([@Old]*24<9,"07-09",IF([@Old]*24<15,"09-15",IF([@Old]*24<18,"15-18","18-00"))))))

但我希望时间跨度也以列 M 为条件,因此第 41 到 42 行的时间跨度仍应为 05-07,因为它们在 05-07 开始的批次中(行31)。我已经上传了下图中的结果。我还有一列计算批次的开始和结束(从 1 开始)。这可能有助于解决问题,但我不确定如何扩展条件 if 语句。

【问题讨论】:

    标签: vba if-statement excel-formula


    【解决方案1】:

    试试这个(这适用于单元格 F2,因为正在检查其他行 - 在这种情况下是 M1 和 R1,它们没有以 teble-ish 方式进行简单引用):

    =IF([@batch]<>M1,IF([@Old]="","",IF([@Old]*24<5,"00-05",IF([@Old]*24<7,"05-07",IF([@Old]*24<9,"07-09",IF([@Old]*24<15,"09-15",IF([@Old]*24<18,"15-18","18-00")))))),V1)
    

    基本上我添加了一个额外的 if 来检查它是否是一个新批次。

    IF([@batch]<>M1,(do the long calculation), (use the same value as above))
    

    【讨论】:

    • 我马上试试。为什么要使用 R 柱?
    • 因为我没有引起足够的重视...抱歉,请使用公式本身所在的 V 列。
    • Np :) 嗯,刚试过。似乎没有工作。错误消息是:“您已在此函数中插入了许多参数”。
    • 我的错。现在完美运行。谢谢!
    • 哦,我很高兴。 :) 如果这有助于您解决问题,请标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2017-11-15
    • 2017-03-05
    • 1970-01-01
    相关资源
    最近更新 更多