将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)