【发布时间】:2017-05-30 10:36:02
【问题描述】:
编辑:根据答案,我能够从一个范围内获得最小/最大日期:
Dim dt As Date
dt = WorksheetFunction.Min(Range("D2:D300"))
但这还不够。如何将此函数与数组而不是范围一起使用?
原帖: 我有以下列:
格式为:DD/MM/YYYY HH:MM
我试图从第一列获取最快的日期时间,从第二列获取最新的日期时间。在这种情况下:
2017 年 2 月 1 日 6:07(第一栏最早的日期时间,1 月 2 日)
02/02/2017 14:11(第二列的最新日期时间,2 月 2 日)
我有一个包含单元格值的多维数组 (myData),我的函数是这些:
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
看来我的日期格式有问题。不知何故,日子和月份是混杂的。我该如何解决?
谢谢
编辑:DateSerial(如链接线程中所建议)不适用于此处,因为我不仅关心日期,还关心时间。 DateSerial 只接受年-月-日作为参数。
【问题讨论】:
-
如果这些真的是日期,那么格式就完全无关紧要了。 Excel 将日期/时间存储为自
1 Jan 1900以来的天数和一天的小数部分。=MIN(D:D)将在 D 列中返回最早的日期/时间;=MAX(E:E)将在 E 列中返回最新的日期/时间 -
要在数组上使用该函数,只需将范围替换为一维数组即可。