我有一個字串陣列,我需要過濾我的資料,其中第 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,因此不起作用
uj5u.com熱心網友回復:
您可以將可見范圍復制到過濾后的行下方,然后洗掉上面的所有行。
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366812.html
