簡體   English   中英

如何在Excel VBA中減去時間?

[英]How to subtract Time in Excel VBA?

如何在Excel VBA中減去時間? 我嘗試將這兩個值相減,但是卻得到了該值“ 2.1527777777778E-02”。 這是什么意思?

Timein = 12/7/16 12:00:00 AM

超時= 16/12/7/12 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

您可以使用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一年中的一天

d Day

w平日

ww周

小時

n分鍾

2.1527777777778E-02使用一種顯示值的方法,稱為科學2.1527777777778E-02法。 在您的情況下,這意味着2.152777777777810乘以-2的冪的2.1527777777778 或者,您可以將E-02部分理解為意味着將小數點向左移動兩個位置(向左移動,因為它為負數)。 因此: 0.021527777777778

Excel將時間(日期和時間)視為整天,因此半天(12小時)將表示為0.5

因此,結果本身代表一整天的小數部分,例如,如果要以分鍾為單位,則可以將該值乘以1440 (24小時x 60分鍾,一天),這將為您提供31分鍾。

在您的示例中,您將發現12:0012:30之間的差異,因此您實際上應該得到2.08333333333333E-02的結果,如果將其乘以1440則將得到30分鍾。

Excel中為您提供了工具,以找到在兩個時間點之間的區別盡管這需要所有復雜的數學(S)了- DateDiff和@holger給你,你需要有編寫自己的代碼的一切。

您已將總數定義為double,這將返回您的數字。 您需要將總計作為日期變暗,以便返回時間。

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

正如vacip在評論中提到的那樣,日期/時間變量以“天”的形式存儲在VBA中,因此,例如, Now對我來說是編號42867.7513310185

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM