将date与特定date时间格式(VBA)进行比较

编辑:根据答案,我可以从一个范围内获得最小/最大date:

Dim dt As Date dt = WorksheetFunction.Min(Range("D2:D300")) 

但这还不够。 如何用数组而不是范围使用这个函数?

原帖:我有以下几栏:

在这里输入图像说明

格式是: DD / MM / YYYY HH:MM

我试图从第一列中得到最早的date时间和第二列中的最新的date时间。 在这种情况下:

02/01/2017 6:07(1月2日的第一列的earlist datetime)

02/02/2017 14:11(二月二日的最后一个date)

我有一个multidimensional array(myData)与单元格的值,我的function是这些:

 Private Function GetLatestDateFromData() As String Dim latestDate As String Dim i As Long latestDate = myData(1, ColumnsIndex(3) - 1) For i = 1 To UBound(myData, 1) - 1 If latestDate < myData(i, ColumnsIndex(3) - 1) Then latestDate = myData(i, ColumnsIndex(3) - 1) End If Next GetLatestDateFromData = latestDate End Function Private Function GetEarliestDateFromData() As String Dim earliestDate As String Dim i As Long earliestDate = myData(1, ColumnsIndex(2) - 1) For i = 1 To UBound(myData, 1) - 1 If earliestDate > myData(i, ColumnsIndex(2) - 1) Then earliestDate = myData(i, ColumnsIndex(2) - 1) End If Next GetEarliestDateFromData = earliestDate End Function 

问题是我的结果是以下几点:

 startingFrom = DateValue(GetEarliestDateFromData) 'returns 01/02/2017, 1st of February untilDate = DateValue(GetLatestDateFromData) 'returns 01/06/2017, 1st of June 

似乎我有一个date格式的问题。 不知何故,日子和月份是混合的。 我如何解决它?

谢谢

编辑: DateSerial (build议在链接的线程)不适用这里,因为我不仅关心的date,但时间以及。 DateSerial仅以年 – 月 – 日为参数。

要修复你的date使用格式function,例如

 date = Format(value, "MM\/DD\/YYYY") 

更简单地,您可以比较实际值(例如02/01/2017 06:07等于42737,2548611111),这与显示的格式无关。

此外,我build议你使用WorksheetFunction.Maxfunction,这是VBA等价超越最大function,返回您的范围内最大的价值,如:

 date = WorksheetFunction.Max(your_used_range)