繁体   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