如何应用自动过滤条件,该条件仅在范围内的每个单元格(例如,一行10个单元格)为空白时才适用。
我尝试了下面的方法,但是自动过滤器没有以这种方式应用。
With range
.AutoFilter Field:=1, Criteria1:=Application.WorksheetFunction.CountA(Range("A5:J5")) = 0
End with
目标是隐藏所有单元格都为空白的范围内的行。要求所有单元格都为空白,例如不只是9/10或1/10。
令我感到惊讶的是,我无法在任何地方找到类似的问题,我想知道我的搜索是否纯粹是错误的-但这并没有改变我找不到类似问题或答案的事实。因此,提前,抱歉,是否已经有人问过这个问题。
答案 0 :(得分:2)
如果您不介意使用“帮助器”列,则可以避免使用AutoFilter()
:
With myRange
With .Resize(, .Columns.Count + 1) ' enlarge referenced range by one "helper" column and reference this latter
.Offset(, .Columns.Count - 1).Resize(, 1).FormulaR1C1 = "=IF(COUNTA(RC1:RC[-1])=0,1, """")" ' fill referenced "helper" range with a formula outputting a number if condition is met
.SpecialCells(xlCellTypeFormulas, xlNumbers).EntireRow.Hidden = True ' hide referenced range rows with a numeric value
.Offset(, .Columns.Count - 1).Resize(, 1).ClearContents ' clear helper column formula
End With
End With
在此示例中,“帮助器”列仅是引用范围的右列
但可以对代码进行调整以使用任何“帮助程序”列
答案 1 :(得分:1)
只需堆叠10个过滤字段。一个不会覆盖另一个,而是每个都会增加前一个过滤器集。
要隐藏第1-10列为空白的行,
With range
.AutoFilter Field:=1, Criteria1:="<>"
.AutoFilter Field:=2, Criteria1:="<>"
.AutoFilter Field:=3, Criteria1:="<>"
.AutoFilter Field:=4, Criteria1:="<>"
.AutoFilter Field:=5, Criteria1:="<>"
.AutoFilter Field:=6, Criteria1:="<>"
.AutoFilter Field:=7, Criteria1:="<>"
.AutoFilter Field:=8, Criteria1:="<>"
.AutoFilter Field:=9, Criteria1:="<>"
.AutoFilter Field:=10, Criteria1:="<>"
End with
要显示第1-10列为空白的行以进行删除或其他操作,
With range
.AutoFilter Field:=1, Criteria1:="="
.AutoFilter Field:=2, Criteria1:="="
.AutoFilter Field:=3, Criteria1:="="
.AutoFilter Field:=4, Criteria1:="="
.AutoFilter Field:=5, Criteria1:="="
.AutoFilter Field:=6, Criteria1:="="
.AutoFilter Field:=7, Criteria1:="="
.AutoFilter Field:=8, Criteria1:="="
.AutoFilter Field:=9, Criteria1:="="
.AutoFilter Field:=10, Criteria1:="="
End with