簡體   English   中英

如何使用 VBA 計算 Excel 中差異格式的時間差

[英]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.

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