如何在Excel VBA中减去时间?

时间:2017-05-12 07:40:07

标签: excel vba excel-vba datetime time

如何在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

4 个答案:

答案 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}}分钟。

在您的示例中,您发现3112: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