问题很简单,但我找不到任何有效的解决方案。 我有一张桌子。我希望循环并在满足某些条件时删除整行。 我使用的代码如下:
Range("H3").Select
Range(Selection, Selection.End(xlDown)).Select
Dim cellule As Range
For Each cellule In Selection.Cells
If cellule.Value = "--" And ...(More condition) Then
cellule.EntireRow.Delete
End If
Next cellule
它实际上有效,但是当连续两个行满足这些条件时,第二个行不会被删除,因为它在删除第一个时已经上升。基本上第二次被跳过了。
答案 0 :(得分:0)
如果您愿意,可以在没有循环的情况下执行此操作:
首先,在空列中添加一个公式,如果条件为真,将显示#NA错误:
sFormula = "=IF(H:H=""- -"",NA(),"""")" ' could combine conditions using AND Excel worksheet functionn
' put the formula in column K for all rows, if the condition in col H is met,
' this row will show an #NA error in column K
Range("K2:K" & Range("H" & rows.count).End(xlUp).Row).Formula = sFormula
' now match all the rows using SpecialCells in one step, and delete!
Range("K5:H" & Range("H" & rows.count).End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlErrors).entirerow.delete shift:=xlup
这类似于在Excel中敲击F5键并单击“特殊细胞”,然后选择“错误”
让我们知道你是如何进行的