Excel 删除不包含';t在a列中不包含日期

Excel 删除不包含';t在a列中不包含日期,excel,vba,Excel,Vba,我有一个工作簿,我想删除工作表“粘贴MyStock”列a中不包含日期的所有行,然后粘贴公式并自动填充到最后一行 代码可以工作,但是不会遍历所有行。它在2-3行之后突然停止,我不得不运行宏几次。这是为什么?我该如何修复它 这是我的代码: Sub del_row_not_date() Dim i As Integer Dim MyStock As Worksheet Dim Pivot As Worksheet Dim Dta As Worksheet Set MyStock = Sheets(

我有一个工作簿,我想删除工作表“粘贴MyStock”列a中不包含日期的所有行,然后粘贴公式并自动填充到最后一行

代码可以工作,但是不会遍历所有行。它在2-3行之后突然停止,我不得不运行宏几次。这是为什么?我该如何修复它

这是我的代码:

Sub del_row_not_date()

Dim i As Integer
Dim MyStock As Worksheet
Dim Pivot As Worksheet
Dim Dta As Worksheet

Set MyStock = Sheets("Paste MyStock")
Set Formula = MyStock.Range("O1")
Set PasteFormula = MyStock.Range("N2")

With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With

LastRow = MyStock.Cells(MyStock.Rows.Count, "A").End(xlUp).Row

For i = 2 To LastRow
    If IsDate(MyStock.Cells(i, 1)) = False Then
        MyStock.Cells(i, 1).EntireRow.Delete
    End If
Next

Formula.Copy
PasteFormula.PasteSpecial xlPasteAll

PasteFormula.AutoFill Destination:=MyStock.Range("N2:N" & LastRow)

With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With   

End Sub

删除时,请自下而上循环,否则您的循环将在删除后无意中跳过行:

For i = LastRow to 2 Step -1
也使用
Long
代替
Integer
;看看原因:


当行被删除时,您始终可以在的末尾执行i=i-1loop@4est不建议在循环中修改
i
。如果需要按某些值筛选某些范围并删除筛选的行,可以使用filter。按照我的回答解释如何正确过滤范围。最后,您只需要调用
rngFiltered.EntireRow.Delete
。使用过滤器删除要比使用循环快得多。
Dim i as Long