編集:私は範囲から最小/最大日付を取得することができた回答に基づいて:は、特定の日時書式(VBA)で日付を比較
Dim dt As Date
dt = WorksheetFunction.Min(Range("D2:D300"))
しかし、それは十分ではありません。範囲の代わりに配列でこの関数を使用するにはどうすればよいですか?
オリジナルのポスト: I持って次の列:
形式は次のとおりです。DD/MM/YYYYのHH:MM
私は最も早い日時を取得しようとしています列1の最新の日時と列2の最新の日時。この場合:
2017年2月1日6時07分(最初の列からearlist日時、1月2)
2017年2月2日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
私は日付の書式に問題があります。どういうわけか、日と月が混ざり合っている。どうすれば修正できますか?
おかげ
EDIT:(リンクのスレッドで提案されているように)私は、同様の日付が、時間を気にしないのでDateSerial
ここでは適用されません。 DateSerial
は引数としてyear-month-dayだけをとります。
が重複する可能性を文字列を日付形式](http://stackoverflow.com/questions/20672875/vba-convert-string-to-date-format) –
それらが実際に日付である場合、形式は完全に無関係です。 Excelは、1900年1月1日以降の日付と時刻を日付と分数として保存します。 '= MIN(D:D)'は列Dの最も早い日付/時刻を返します。 '= MAX(E:E)'は列Eの最新の日付/時刻を返します –
配列でその関数を使用するには、範囲を1次元配列に置き換えます。 –