繁体   English   中英

反向自动过滤字符串数组

[英]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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM