有效的方法来删除行(多个标准)VBA

我有一张表格,里面A列有一个stringA和列B由stringB组成。

我想保留在A栏中的单词“Begründung”和B栏中的“Nein”中的行。

我正在使用从这些来源find以下代码有效的方法来删除整个行,如果单元格不包含“@”和删除行基于search键VBA

Sub KeepOnlyAtSymbolRows() Dim ws As Worksheet Dim rng As Range Dim lastRow As Long Set ws = ActiveWorkbook.Sheets("Sheet1") lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row Set rng = ws.Range("A1:A" & lastRow) ' filter and delete all but header row With rng .AutoFilter Field:=1, Criteria1:="<>*Begründung*" .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ' turn off the filters ws.AutoFilterMode = False End Sub 

我想为Col B添加另一个标准。在Col B的任何地方,遇到'Nein'这行被保留,其余的被删除,但同时'A列的Begrüundung被保留,其余的被删除。

换句话说,无论在表单中遇到“Begründung”还是“Nein”,这些行都被保留,其余的被删除。

如果你们中的任何一位能够帮助,我将不胜感激。

尝试这个:

 Sub DeleteWithMultipleColumnsCriterias() Dim ws As Worksheet Dim rng As Range Dim lastRow As Long Set ws = ActiveWorkbook.Sheets("Sheet1") lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row Set rng = ws.Range("A1:B" & lastRow) ' filter and delete all but header row With rng .AutoFilter Field:=1, Criteria1:="<>*Begründung*" .AutoFilter Field:=2, Criteria1:="<>*Nein*" .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ' turn off the filters ws.AutoFilterMode = False End Sub