Excel 删除不包含';t在a列中不包含日期
我有一个工作簿,我想删除工作表“粘贴MyStock”列a中不包含日期的所有行,然后粘贴公式并自动填充到最后一行 代码可以工作,但是不会遍历所有行。它在2-3行之后突然停止,我不得不运行宏几次。这是为什么?我该如何修复它 这是我的代码: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(
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