根据列值删除行

时间:2018-08-21 13:48:02

标签: excel vba excel-vba

我要检查单元格(“ C”)是否不包含日期或为空以删除特定行。我的代码并没有删除所有详细信息行,并且对于行数(138)似乎太慢了。

lastrow = pertes.Cells(pertes.Rows.count, "A").End(xlUp).Row
For i = 2 To lastrow
    If Not IsDate(pertes.Cells(i, 3).Value) Or IsEmpty(pertes.Cells(i, 3).Value) Then
        pertes.Rows(i).Delete
    End If
Next i

1 个答案:

答案 0 :(得分:2)

如果您一一删除或添加行,则循环必须向后:

Promise.all

否则删除将更改行数,因此循环计数错误。


要使其更快,您可以使用For i = lastrow To 2 Step -1 收集一定范围内必须删除的所有行,然后最后一次将其全部删除。这样更快,因为每个删除操作都会花费时间,并且将操作数量减少到1。

Union()

请注意,这里我们不需要向后循环,因为我们在循环后 一次删除了所有行。