[英]How to Calculate time difference in difference format in Excel using VBA
我有 2 列不同格式的日期。
如您所見,一列采用 dd/mm/yyyy 格式,另一列采用 mm/dd/yyyy 格式。
我想找出兩者之間的時差。 此外,一列采用日期格式,另一列采用通用格式。
我在VB中寫了一個function來計算這樣的差異:
Function caclulateDifference(pDate1 As Date, pDate2 As Date) As Long
TestDates = DateDiff("d", pDate1, pDate2)
End Function
我使用 =caclulateDifference(b2,a2) 在 Excel 中調用它但是,
pDate1 將在 10/15/19 11:38:38 AM 出現,但 pDate2 顯示為 10/19/15 9:09:23 AM,然后差異為 0。
我想要日、小時和分鍾的差異。 我究竟做錯了什么?
您得到 0 是因為這些值之間有 0 天,另外,您永遠不會為 Function 分配一個值來返回Long
的默認值以外的任何值。
試試這樣:
Function caclulateDifference(pDate1 As Date, pDate2 As Date) As Long
caclulateDifference = DateDiff("d", pDate1, pDate2)
End Function
你仍然會得到 0,但在這個例子中,這就是你應該得到的。 將 function 更改為此,然后查看您的調試 window 以查看日期格式是否正確:
Public Function caclulateDifference(pDate1 As Date, pDate2 As Date) As Long
Debug.Print pDate1
Debug.Print pDate2
caclulateDifference = DateDiff("d", pDate1, pDate2)
End Function
然后使用不同日期的日期值對其進行測試,以獲得 0 以外的值。
現在,如果您希望它比您所說的天數更詳細,則需要返回Long
以外的值(值中也可能包含毫秒)並在DateDiff
中使用不同的參數,如下所示:
Public Function caclulateDifference(pDate1 As Date, pDate2 As Date) As Double
caclulateDifference = DateDiff("s", pDate1, pDate2)
End Function
然后將秒數轉換為天數、小時數、分鍾數和秒數。
如果您不希望順序重要,並且總是得到一個正數,也可以使用Abs
(絕對值)function,如下所示:
Public Function caclulateDifference(pDate1 As Date, pDate2 As Date) As Double
caclulateDifference = Abs(DateDiff("s", pDate1, pDate2))
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.