如何在Excel VBA中减去时间?

问题描述 投票:0回答:5

如何在 Excel VBA 中减去时间? 我尝试减去这两个值,但得到的值是“2.1527777777778E-02”。这是什么意思?

时间 = 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
vba excel datetime time
5个回答
11
投票

您可以使用 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 季度

y 一年中的哪一天

w 工作日

ww 周

小时

n 分钟

第二个


3
投票

您所做的完全正确,从以下代码可以看出:

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中,因此,例如,

Now
对我来说是数字
42867.7513310185


3
投票

2.1527777777778E-02
使用一种称为科学记数法的值显示方法。在您的情况下,这意味着
2.1527777777778
乘以
10
-2
次方。或者您可以将
E-02
部分视为将小数点向左移动两位(向左移动因为它是负数)。 所以:
0.021527777777778

Excel 将时间(日期和一天中的时间)视为整日,因此半天(12 小时)将表示为

0.5

因此,结果本身代表一整天的小数部分,例如,如果您想要以分钟为单位,则可以将该值乘以

1440
(24 小时 x 60 分钟为一天),这将为您提供
31
分钟。

在您的示例中,您发现

12:00
12:30
之间的差异,因此您实际上应该得到
2.08333333333333E-02
的结果,如果乘以
1440
将为您提供
30
分钟。

Excel 为您提供了找到两个时间点之间差异的工具,尽管它消除了所有复杂的数学 -

DateDiff
并且 @holger 为您提供了编写自己的代码所需的一切。


0
投票

您已将总计定义为 double,这将返回您的数字。您需要将总计调暗为日期,以便返回时间。

Dim Total as Date
Dim Timein as Date
Dim Timeout as Date

Total = TimeValue(Timeout) - TimeValue(Timein)

0
投票

乘以 2.1527777777778E-02 x 24 x 60 x 60 = 1860 秒 24 小时 x 60 分钟 x 60 秒

© www.soinside.com 2019 - 2024. All rights reserved.