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