Критерии автофильтра VBA: применяются, если ВСЕ ячейки в текущем диапазоне / строке не заполнены - PullRequest
0 голосов
/ 22 сентября 2018

Как применить критерий автофильтрации, который применяется только в том случае, если КАЖДАЯ ячейка в диапазоне, скажем, строка из 10 ячеек, пуста.

Я попробовал подход ниже, но автофильтр не применяется таким образом.

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

Цель состоит в том, чтобы скрыть строки в диапазоне, в котором все ячейки пусты.Требуется, чтобы ВСЕ ячейки были пустыми, а не только 9/10 или 1/10, например.

Я удивлен, что нигде не смог найти подобный вопрос, и мне интересно, есть ли мой поискэто просто неправильно - но это не меняет того факта, что я не могу найти похожие вопросы или ответы.Поэтому заранее, извините, если об этом уже спрашивали.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

если вы не возражаете против использования столбца "помощник", вы можете избежать 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

в этом примере столбец "помощник" - это всего лишь один столбец справа от указанного диапазона

но код может быть настроен для использования любого столбца "helper"

0 голосов
/ 22 сентября 2018

Просто сложите 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
...