Vba 到四舍五入分钟的时间

Vba 到四舍五入分钟的时间,vba,excel,Vba,Excel,我在Excel单元格中有以下值: Time Dev Total 00:47:53 00:03:40 50 我正在使用VBA计算我的“总”值: 这返回50。我想考虑一下秒数,返回52秒,因为秒数会增加93秒,这意味着超过一分半钟。所以它必须凑到52 我必须如何调整VBA代码?VBAMinute函数将始终截断,其返回值限制在0…59范围内的整数 请尝试以下方法: Function sumMinutes(d1 As Date, d2 As Date)

我在Excel单元格中有以下值:

 Time        Dev         Total
 00:47:53    00:03:40     50
我正在使用VBA计算我的“总”值:

这返回50。我想考虑一下秒数,返回52秒,因为秒数会增加93秒,这意味着超过一分半钟。所以它必须凑到52


我必须如何调整VBA代码?

VBA
Minute
函数将始终截断,其返回值限制在
0…59范围内的整数

请尝试以下方法:

Function sumMinutes(d1 As Date, d2 As Date) As Long
    sumMinutes = CLng((d1 + d2) * 1440)
End Function
Excel将日期存储为天和一天的分数。由于一天有1440分钟,将Excel日期乘以1440将得到分钟数。然后使用
CLng
有效地对值进行四舍五入


编辑:请注意,由于VBA舍入算法舍入到最接近的偶数(所谓的银行家舍入),因此在30秒标记处正好落下的某些时间可能会向下舍入,而不是向上舍入。如果这是您的问题,您可以使用
工作表函数.Round
方法,而不是使用VBA
CLng

VBA
Minute
函数将始终截断,其返回值限制为
0…59
范围内的整数

请尝试以下方法:

Function sumMinutes(d1 As Date, d2 As Date) As Long
    sumMinutes = CLng((d1 + d2) * 1440)
End Function
Excel将日期存储为天和一天的分数。由于一天有1440分钟,将Excel日期乘以1440将得到分钟数。然后使用
CLng
有效地对值进行四舍五入

编辑:请注意,由于VBA舍入算法舍入到最接近的偶数(所谓的银行家舍入),因此在30秒标记处正好落下的某些时间可能会向下舍入,而不是向上舍入。如果这是您的问题,您可以使用
工作表函数.Round
方法,而不是使用VBA
CLng