如何从列中的date列表中查找最早的date?

我已经采取了现有的代码,并试图使其适应我想要做的事情,但是我在这个过程中遇到了麻烦。

列大小(date的数量)将在我将要处理的每个Excel表单中变化。 每个单元格将明确地包含格式为dd / mm / yyyy的date。

运行时错误“13”types不匹配

任何想法如何能解决这个问题?

Dim j As Integer, minValue As Date Dim t0 As Double, t1 As Double Dim ans As Date t0 = CDbl(DateSerial(2000, 1, 1)) t1 = CDbl(DateSerial(2100, 12, 31)) ans = 0 For j = 3 To 7 If ans = 0 Then ' You need to store the first valid value If Sheets(1).Cells(j, 9).Value >= t0 And Sheets(1).Cells(j, 9) <= t1 Then ans = Sheets(1).Cells(j, 9).Value End If Else If (Sheets(1).Cells(j, 9).Value >= t0 And Sheets(1).Cells(j, 9) <= t1) _ And Sheets(1).Cells.Value < ans Then ans = Sheets(1).Cells(j, 9).Value End If End If Next j 

我能够使用山姆的评论来回答我自己的问题。 这是一个解决我的问题的工作macros:

 Range("I3:I7").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("I3"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("I3:I7") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("I3").Select Selection.Copy Sheets("Sheet2").Select Range("AA1").Select ActiveSheet.Paste 

这是一个更直接的方法:

 [sheet2!a1] = cdate([small(sheet1!i:i,1)])