【发布时间】:2021-08-19 06:59:06
【问题描述】:
这是我关于 SO 的第一篇文章,所以我希望我这样做是正确的。
我正在尝试从我的数据中删除满足以下条件的行:
- 第一列的值与其下面的单元格不同
- 第三列的值等于它下面的单元格
我的代码示例如下所示:
For Each Cell In MyRangeA3
If Cell.Value <> Cell.Offset(1).Value Then
If Cell.Offset(, 2).Value = Cell.Offset(1, 2).Value Then
Cell.Offset(1).EntireRow.Delete
End If
End If
Next Cell
我面临的问题是我的宏转到下一个单元格,因此我必须再次重新运行我的宏才能删除符合我条件的下一行。我应该在我的代码中添加什么才能一次性完成此操作?
【问题讨论】:
-
1. Find the last row 2. 使用反向循环
For i = Lastrow to 1 Step -1然后匹配并删除行。 -
正如@SiddharthRout 所提到的:从列表中删除项目是一个众所周知的陷阱:当您从列表的开头开始并继续时,您可能不会删除所有需要的项目。因此,您需要从列表的末尾开始并以相反的方向遍历列表。 :-)
-
@SiddharthRout,我可以知道步骤 -1 是什么意思吗?抱歉,我对 VBA 比较陌生。