[英]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.1527777777778
是10
乘以-2
的冪的2.1527777777778
。 或者,您可以將E-02
部分理解為意味着將小數點向左移動兩個位置(向左移動,因為它為負數)。 因此: 0.021527777777778
。
Excel將時間(日期和時間)視為整天,因此半天(12小時)將表示為0.5
。
因此,結果本身代表一整天的小數部分,例如,如果要以分鍾為單位,則可以將該值乘以1440
(24小時x 60分鍾,一天),這將為您提供31
分鍾。
在您的示例中,您將發現12:00
和12: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.