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