在今天之前的日期删除行 -

时间:2017-06-21 13:19:17

标签: vba loops date rows

我正在努力解决以下问题:我想删除日期(列C)比今天更早的行。我的代码应该可以工作(根据网络),但它不会,而且它的速度超慢......以下是它的一部分:

For i = 2 To LastRow     
    If Cells(i, "C").Value < Date Then Rows(i).EntireRow.Delete    
Next i

而不是放置&#34; C&#34;,我可以放3,但不会改变任何东西。我试图添加End If(在下一个i之前),但显然不是必需的。也许日期不是正确的格式..

这段代码有什么问题?

非常感谢你的帮助:)

2 个答案:

答案 0 :(得分:1)

使用Excel的自动过滤功能对您有利。按条件筛选范围以删除匹配的行:

  With Range("C1:C" & lastrow)
    .AutoFilter 1, "<" & CLng(Date)
    .Offset(1).EntireRow.Delete
    .AutoFilter
  End With

答案 1 :(得分:0)

删除行时,您需要向后退一步,并确认它实际上是单元格中的日期。要查看它正在做什么,请在第一行设置断点并使用F8逐步执行。同时验证LastRow的值是否设置为正确的值。

For i = LastRow To 2 Step -1
    If IsDate(Cells(i, "C").Value) then
        If Cells(i, "C").Value < Date Then Rows(i).EntireRow.Delete
    End If
Next i