VBA - 删除循环中具有条件的行

时间:2016-12-02 14:50:24

标签: excel vba excel-vba

我必须删除所有必须在VBA excel中等于单元格的行。这是我写的:

Dim i As Long, j As Long
j = Rows.Count
For i = 1 To j
    If Cells(i, 17).Value = Cells(i, 19).Value Then Rows(i).Delete
Next i

但是这段代码并没有删除我要查找的每一行。如果有两行分别匹配条件,Excel跳转到另一行并离开(这是逻辑的),我不知道如何调整此循环以返回并删除每个搜索的行

2 个答案:

答案 0 :(得分:2)

我从您的代码中理解的是,它并没有迭代所有行,因为其中一个条件已经完成。 我的建议是反向循环它。使用“ - 1”

从最后一次迭代

而不是:

For i = 1 To j
    If Cells(i, 17).Value = Cells(i, 19).Value Then Rows(i).Delete
Next i

这样做:

For i = j to 1 Step - 1
    If Cells(i, 17).Value = Cells(i, 19).Value Then Rows(i).Delete
Next i

答案 1 :(得分:0)

删除行时,必须减小i的值并更新j的值。 因为当你删除一行时:

  • 以下行现在位于i位置
  • 行数(j)减少1行