如何根据条件Excel vba删除表的行

时间:2014-04-09 21:55:05

标签: excel-vba vba excel

问题很简单,但我找不到任何有效的解决方案。 我有一张桌子。我希望循环并在满足某些条件时删除整行。 我使用的代码如下:

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

它实际上有效,但是当连续两个行满足这些条件时,第二个行不会被删除,因为它在删除第一个时已经上升。基本上第二次被跳过了。

1 个答案:

答案 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键并单击“特殊细胞”,然后选择“错误”

让我们知道你是如何进行的