如何在Excel VBA中减去时间?
如何在Excel VBA中减去时间? 我试图减去这两个值,但我得到这个值“2.1527777777778E-02”而不是。 这是什么意思?
Timein = 12/7/16 12:00:00 AM
超时= 12/7/16 12:30:00上午
这是我的代码示例。 提前致谢。
Dim Total as Double Dim Timein as Date Dim Timeout as Date Total = TimeValue(Timeout) - TimeValue(Timein) 'Result Total=2.1527777777778E-02
您可以使用DateDiff函数来获取年/日/秒或其他任何的差异。
这里是分钟的例子。
Dim Timein As Date Dim Timeout As Date Timein = "12/7/16 12:00:00 AM" Timeout = "12/7/16 12:30:00 AM" Debug.Print DateDiff("n", Timein, Timeout)
输出:
30
间隔说明
yyyy年
季度
m月
一年的日子
d日
周日
周ww
h小时
n分钟
秒
2.1527777777778E-02
正在使用显示名为Scientific Notation的值的方法。 在你的情况下,意味着2.1527777777778
乘以10
的-2
次幂。 或者你可以把E-02
部分看成是把小数点左移两位(左是因为是负数)。 所以: 0.021527777777778
。
Excel将整天的时间(date和时间)视为整天,所以半天(12小时)将表示为0.5
。
因此,结果本身就是一整天的小数部分,如果你想在几分钟内得到这个数字,例如,你可以乘以1440
(24小时x 60分钟做一天),这会给你31
分钟。
在你的例子中,你发现在12:00
和12:30
12:00
12:30
之间的差异,所以你应该得到2.08333333333333E-02
的结果,如果乘以1440
会给你30
分钟。
Excel为您提供了查找两个时间点之间的差异的工具,尽pipe这样可以将所有复杂的math运算 – DateDiff
和@holger已经为您提供了编写自己的代码所需的一切。
您已将总数定义为double,这会返回您的数字。 你需要将date变暗,以便返回一次。
Dim Total as Date Dim Timein as Date Dim Timeout as Date Total = TimeValue(Timeout) - TimeValue(Timein)
你所做的是完全正确的,如下面的代码所示:
Sub test() Dim Total As Double Dim Timein As Date Dim Timeout As Date Timein = CDate(Range("A1").Value) Timeout = CDate(Range("A2").Value) Total = TimeValue(Timeout) - TimeValue(Timein) Debug.Print Total Debug.Print Format(Total, "hh:mm:ss") Range("A3").NumberFormat = "hh:mm:ss" Range("A3").Value = Total Debug.Print "Number of hours = " & Total * 24 End Sub
正如在评论中提到的,date/时间variables存储在VBA中的“天”,所以,例如, Now
对我来说是数字42867.7513310185
。