excel - 将时间四舍五入到最接近的 15 分钟

问题描述 投票:0回答:4

我有一个公式,可以计算几次的差值,并将其乘以 24,得到总计的十进制值:

D10=(C9-D9)*24

我想做这样的特殊舍入:

如果

D9 is 1pm
C9 is 2:08 pm
,我希望D10是
1.25

还有一句话

1:53 until 2:07 would be counted as 2
2:08 until 2:22 would be 2:15
2:23 through 2:37 would be 2:30
etc

有人知道如何进行这种特殊的舍入吗?

正如道格所说:

i need the accrued time from 1 PM to 2:08 PM should round up to 1.25 hours whereas 1 PM to 2 PM would round down to 1 hour, in other words to the nearest quarter hour.
excel vba excel-formula
4个回答
4
投票

这是根据您的需要划分差异的公式:

=(TRUNC((D9+VALUE("00:07"))*96)-TRUNC((C9+VALUE("00:07"))*96))*VALUE("00:15")*24

4
投票

如果您想要以小时为单位的时间差,但四舍五入到最接近的一刻钟,那么也许您需要的只是:

=MROUND((C9-D9)*24,0.25)

2
投票

Excel 函数版本:

根据评论中的要求,这是一个仅支持 Excel 函数的版本:

四舍五入到下一个 15 分钟边界:

=时间(小时(A1),15*天花板(分钟(A1)/15,1),0)

  • 注意根据原始问题将 A1 替换为 (t2-t1)

舍入到最近的 15 分钟边界:

=时间(小时(A1),15*回合(分钟(A1)/15,0),0)

顺便说一句:出于性能原因,也可能出于地理原因,应避免转换为字符串来进行日期操作。也许这些都不是您所关心的。


VBA 版本

您可以使用 div 和 mod 函数来做到这一点。 不确定您是否想要在 vba 或 excel 宏中使用它,但这是方法。 现在我面前没有 Excel,所以这里...

(如果您需要多次重复使用,请在 VBA 中执行)

转换为分数

d=下限(n/0.25)

余数=n mod 0.25

x=0.25 * 轮(余数/0.25)

答案=(d * 0.25) + x

应该很接近。

...只是想到了 Excel 键“tick”到小数函数(又是什么)。 这可能是一个更好的方法。

用 vba 对其进行编码...仅进行基本测试:

Public Function f(n As Double) As Double

    Dim d As Double, r As Double, x As Double

    d = Int(n / 0.25)
    r = n - (d * 0.25)   ' strange... couldn't use mod function with decimal?
    x = 0.25 * Round(r / 0.25)

    f = (d * 0.25) + x

End Function

用途:

(在单元格中)

=f(c9-d9)


1
投票

这是另一个正式选项

=(ROUND(+D9*96,0)-ROUND(+C9*96,0))/4

将每个时间序列转换为 1/4 小时 (*96)、舍入、添加结果并缩放为小时 (*4)

© www.soinside.com 2019 - 2024. All rights reserved.