我正在努力解决以下问题:我想删除日期(列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之前),但显然不是必需的。也许日期不是正确的格式..
这段代码有什么问题?
非常感谢你的帮助:)
答案 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