字符串的反向自动过滤器数组

Inverse autofilter array of strings

我有一个字符串数组,我需要过滤第 8 列中的值 不等于 任何数组值的数据,以便删除整行, 我正在使用以下代码行来过滤我想要保留的数据,并且工作正常:

ActiveSheet.Range("A1").AutoFilter Field:=8, Criteria1:=arrSubmitters, Operator:=xlFilterValues

我有以下行来删除整个可见行,它也可以正常工作:

ActiveSheet.Range("A2", ActiveSheet.Range("A2").End(xlDown).End(xlToRight)).SpecialCells(xlCellTypeVisible).EntireRow.Delete

我需要一种方法来反转过滤器,以便我可以删除可见行,或者一种删除不可见行的方法,

知道第 8 列中不需要的值是动态的,因此使用它们进行过滤很复杂, 并且我还尝试在数组值前面加上不等于运算符“<>”,但没有成功,因为它们超过 2

您可以将可见范围复制到过滤行下方,然后删除上方的所有行。

Option Explicit

Sub RevFilter()

    Dim arrSubmitters, lastrow As Long, lastcol As Long
    arrSubmitters = Array("H3", "H11", "H20", "H22")
    
    Application.ScreenUpdating = False
    With ActiveSheet
        lastrow = .Cells(.Rows.Count, 8).End(xlUp).Row
        lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        .Range("A1").AutoFilter Field:=8, Criteria1:=arrSubmitters, Operator:=xlFilterValues
        .Range("A1").Resize(lastrow, lastcol).SpecialCells(xlCellTypeVisible).Copy .Range("A" & lastrow + 1)
        Application.CutCopyMode = False
        .Range("A1").AutoFilter
        .Rows("2:" & lastrow + 1).Delete ' include copied header
    End With
    Application.ScreenUpdating = True
End Sub