我想这很简单明了,但是出于某些原因,它似乎不起作用:(
我有以下代码,它根据我指定的条件自动过滤数据:
Dim lastrow As Long
lastrow = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row
With Sheet2
.AutoFilterMode = False
With .Range("A1:AF" & lastrow)
.AutoFilter
.AutoFilter Field:=7, Criteria1:="Yes", Operator:=xlFilterValues
End With
我现在想做的是删除所有不符合条件的未筛选 (隐藏) 行。
我迄今尝试过的方法:
Sub RemoveHiddenRows
Dim oRow As Object
For Each oRow In Sheets("Sheet2").Rows
If oRow.Hidden Then oRow.Delete
Next
End Sub
但是这段代码的问题在于,它只会删除连续隐藏行中的每一行之后的另一行,因为即使已经删除了一行并且所有较低的行都向上移动了一个位置,每个增量仍然会考虑偶数行。此外,如果可能的话,我更喜欢没有循环的东西,有点像
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
的相反。非常感谢任何帮助。
Criteria1:="<>Yes"
,然后执行.SpecialCells(xlCellTypeVisible).EntireRow.Delete
? - Dmitry Pavliv.Hidden = True
,然后删除隐藏的行。如果你不想使用循环删除,可以先使用Union
循环获取隐藏的行,然后一次性删除它们。 - WGS