Excel 如何创建循环以获取一行中一系列单元格中的两个最新日期

Excel 如何创建循环以获取一行中一系列单元格中的两个最新日期,excel,vba,Excel,Vba,我有一个代码,可以在一个范围内循环,找出日期是否小于当前日期,如果小于当前日期,则清除单元格以及前面的两个单元格。但是,我在获取代码时遇到了一些问题,无法在相同的范围内循环,找到最近的两个日期,并像第一个循环一样清除除最近两个日期以外的所有其他日期的内容。因为我只是一个编码新手,所以即使有一些在线网站的帮助,我也无法让它工作 这是我试图回溯的最新内容,找到了两个最新的日期 For Each cell In Range("Q2:Q1000") If cell.Value <

我有一个代码,可以在一个范围内循环,找出日期是否小于当前日期,如果小于当前日期,则清除单元格以及前面的两个单元格。但是,我在获取代码时遇到了一些问题,无法在相同的范围内循环,找到最近的两个日期,并像第一个循环一样清除除最近两个日期以外的所有其他日期的内容。因为我只是一个编码新手,所以即使有一些在线网站的帮助,我也无法让它工作

这是我试图回溯的最新内容,找到了两个最新的日期

For Each cell In Range("Q2:Q1000")
        If cell.Value < cell.Offset(0, 3).Value Or cell.Offset(0, 
        6).Value Or 
        cell.Offset(0, 9).Value Or cell.Offset(0, 12).Value Or 
         cell.Offset(0,15).Value Then
       cell.ClearContents
       End If

       If cell = "" Then
       cell.Offset(, -1) = ""
       cell.Offset(, -2) = ""
       End If




Here is the code to find out if contents is more than 2 years old.



For Each cell In Range("Q2:Q1000")
        If cell.Value < (currentDate - 730) Then
        cell.ClearContents

       End If


       If cell = "" Then
       cell.Offset(, -1) = ""
       cell.Offset(, -2) = ""
       End If

Next
范围内每个单元格的
(“Q2:Q1000”)
如果cell.Value

我想我遗漏了一些简单的内容,但找不到。

这里有一个方法,可以清除所有日期早于最近两个日期的单元格。这假定
范围(“Q2:Q1000”)
中的值格式正确
日期
单元格:

Dim cel as Range

For CurRow = 2 to 1000
    'Find the 2nd most recent date:
    BeforeDate = Application.WorksheetFunction.Large(Range("Q" & CurRow & ",T" & CurRow & ",W" & CurRow & ",Z" & CurRow & ",AC" & CurRow & ",AF" & CurRow),2)

    For Each cel In Range("Q" & CurRow & ",T" & CurRow & ",W" & CurRow & ",Z" & CurRow & ",AC" & CurRow & ",AF" & CurRow)
        If cel.Value < BeforeDate Then
            cel.ClearContents
            cel.Offset(, -1) = ""
            cel.Offset(, -2) = ""
        End If
    Next cel
Next CurRow
Dim cel as范围
对于电流=2到1000
'查找第二个最近日期:
BeforeDate=Application.WorksheetFunction.Large(范围(“Q”&CurRow&“、T”&CurRow&“、W”&CurRow&“、Z”&CurRow&“、AC”&CurRow&“、AF”&CurRow),2)
对于范围内的每个cel(“Q”&CurRow&“、T”&CurRow&“、W”&CurRow&“、Z”&CurRow&“、AC”&CurRow&“、AF”&CurRow)
如果cel.Value<在此日期之前,则
cel.ClearContents
单元偏移量(,-1)=“
单元偏移量(,-2)=“
如果结束
下一个细胞
下个星期

您是否尝试了
Max
函数来查找最大(最快)日期?如果cell.Value等,您必须编写
代码。这看起来是一个可行的解决方案,只是我可能没有提供足够的信息。BeforeDate看起来不错,但我比较的范围在范围内(“Q2、T2、W2、Z2、AC2、AF2”)。然后相同的比较相同的列一行向下最多1000行。从范围Q2,T2,W2,Z2,AC2开始运行这个代码,这个循环看起来是什么样子的,AF2然后第3行中的相同列,依此类推?当我使用下面的代码时,解决方案起作用,但只有该行需要通过工作表循环到第1000行。Dim cel As Range“查找第二个最新日期:BeforeDate=Application.WorksheetFunction.Large(范围(“Q2,T2,W2,Z2,AC2,AF2”),如果cel.Value