字符串的反向自动过滤器数组
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
我有一个字符串数组,我需要过滤第 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