我有一个十进制数字表示的时间,我需要使用 VBA 在 Excel 中将其转换为分钟和秒。
示例:小数点前的数字给出分钟为 0.197683577(0 分钟),数字乘以 60 给出秒 = 0.197683577*60 = 11.86101462(12 秒)= 0:12
我知道我可以通过复制并粘贴成文本格式并使用文本将数字分隔到小数点的列左右,然后在其间添加“:”来做到这一点,但必须有一种计算方法。
Public Function FromDecimalTime(ByVal t As Double) As Date
FromDecimalTime = TimeSerial(0, Fix(t), (t - Fix(t)) * 60)
End Function
与公式相同:
=TIME(0,TRUNC(A1),(A1-TRUNC(A1))*60)
嗯,其实不一样。将根据舍入规则 ( -> )TimeSerial
舍入秒数,并将截断 ( -> )。但是您可以将舍入函数应用于其最后一个参数。11.86
12
TIME
11.86
11
VBA 函数对我不起作用,但我在 Excel 中找到了一种解决方法:
=TRUNC(W11/60)&":"&IF(ROUND(((W11/60-TRUNC(W11/60))*60),0)=0,"00",ROUND(((W11/60-TRUNC(W11/60))*60),0))`
W11
十进制数字形式的时间在哪里900.3201306
?结果在几分钟内15:00
基本上,你用截断的十进制分钟减去十进制分钟+秒来只给你秒。然后你decimal seconds * 60
拿给你seconds+milliseconds
。四舍五入给你几秒钟。如果秒为 0,则写入“00”以获得正确的格式。然后添加截断的分钟加上秒。
这个公式似乎有效。