如何在Excel VBA中减去时间? 我试图减去这两个值,但我得到这个值“2.1527777777778E-02”。这是什么意思?
Timein = 12/7/16 12:00:00 AM
超时= 12/7/16 12:30:00 AM
以下是我的代码示例。提前谢谢。
Dim Total as Double
Dim Timein as Date
Dim Timeout as Date
Total = TimeValue(Timeout) - TimeValue(Timein)
'Result Total=2.1527777777778E-02
答案 0 :(得分:8)
您可以使用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年q季度
月份
一年中的某一天d天
w平日
周末h小时
n分钟
第二次
答案 1 :(得分:1)
2.1527777777778E-02
正在使用一种显示名为Scientific Notation的值的方法。在您的情况下,2.1527777777778
代表10
的{{1}}倍-2
。或者您可以将E-02
部分视为将小数点向左移动两位(左侧因为它是负数)。
所以:0.021527777777778
。
Excel将时间(日期和时间)视为整天,因此半天(12小时)将表示为0.5
。
所以结果本身代表一整天的小数部分,如果你想在几分钟内得到这个,你可以将值乘以1440
(24小时x 60分钟一天),这会给你{{ 1}}分钟。
在您的示例中,您发现31
和12:00
之间存在差异,因此您实际上应该得到12:30
的结果,如果乘以2.08333333333333E-02
则会得到你1440
分钟。
Excel为您提供了工具,可以找到两个时间点之间的差异,虽然可以将所有复杂的数学带走 - 30
并且@holger已经为您提供了编写自己的代码所需的一切。< / p>
答案 2 :(得分:0)
您已将总数定义为double,它会返回您的数字。你需要将总数调暗为日期,以便给你一个时间。
Dim Total as Date
Dim Timein as Date
Dim Timeout as Date
Total = TimeValue(Timeout) - TimeValue(Timein)
答案 3 :(得分:0)
您所做的完全正确,如以下代码所示:
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
正如评论中的vacip所述,日期/时间变量存储在VBA中&#34;天&#34;因此,例如,Now
对我来说就是数字42867.7513310185
。