VBA自动筛选条件:如果当前范围/行中的所有单元格均为空白,则适用

时间:2018-09-22 08:57:01

标签: excel vba autofilter

如何应用自动过滤条件,该条件仅在范围内的每个单元格(例如,一行10个单元格)为空白时才适用。

我尝试了下面的方法,但是自动过滤器没有以这种方式应用。

With range
     .AutoFilter Field:=1, Criteria1:=Application.WorksheetFunction.CountA(Range("A5:J5")) = 0
End with

目标是隐藏所有单元格都为空白的范围内的行。要求所有单元格都为空白,例如不只是9/10或1/10。

令我感到惊讶的是,我无法在任何地方找到类似的问题,我想知道我的搜索是否纯粹是错误的-但这并没有改变我找不到类似问题或答案的事实。因此,提前,抱歉,是否已经有人问过这个问题。

2 个答案:

答案 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