四舍五入时间精确到15分钟



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

D10=(C9-D9)*24

我想做这样的特殊舍入:

如果是D9 is 1pmC9 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

有人知道怎么做这种特殊的舍入吗?

正如doug所说:

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.

以下是根据需要划分差异的公式:

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

如果你想要以小时为单位的时间差,但四舍五入到最接近的一刻钟,那么你可能只需要这样的东西:

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

Excel函数版本:

根据评论中的要求,这里有一个仅限excel功能的版本:

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

=时间(小时(A1),15*上限(分钟(A1)/15,1),0)

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

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

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

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


VBA版本

您可以使用div和mod函数来完成此操作。不确定你是想在vba还是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)

这里是另一个形式选项

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

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

最新更新