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跳转到另一个并保留(这是合乎逻辑的),我不知道如何适应这个循环来返回并删除每一个search到的行

我从你的代码中了解到,它不是迭代所有行,因为其中一个条件得到满足。 我的build议是反向循环它。 使用“-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 

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

  • 下一行现在在我的位置
  • 行(j)的数量减less了一行