Скрыть ячейки на основе 2 критериев - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь скрыть строки на основе двух разных значений ячеек. У меня есть значение в ячейке B2, и я хочу скрыть что-либо в B5: B1000, не соответствующее критериям. У меня также есть значение в ячейке D2 для дальнейшей сортировки, и я хочу скрыть что-либо в D5: D1000 не соответствует критериям в D2. Чтобы усложнить это, если пользователь вводит «Все» в B2 или D2, я хочу показать их соответствующие строки. Я обнаружил, что VBA скрывается на основе B2, но мне приходится адаптировать код, чтобы он также смотрел на D2.

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Activate
If Not Application.Intersect(Range("B2"), Range(Target.Address)) Is Nothing Then


    Select Case Target.Value
    Case Is = "All": Rows("5:1000").EntireRow.Hidden = False
    Case Is <> "All": Rows("5:1000").EntireRow.Hidden = False
        For rownum = "5" To "1000"
            If Cells(rownum, 2).Value <> Range("B2") And Cells(rownum, 4).Value <> Range("D2") Then
                Cells(rownum, 2).EntireRow.Hidden = True
                Cells(rownum, 4).EntireRow.Hidden = True
            End If
        Next rownum
    End Select

End If


End Sub

1 Ответ

0 голосов
/ 17 января 2020

Согласно моему комментарию, вы можете попробовать Range.AutoFilter. Представьте себе следующие данные:

enter image description here

Запуск следующего кода:

Sub Test()

Dim rng As Range

With Sheet1
    If .Cells(2, 2).Value = "ALL" Or .Cells(2, 4).Value = "ALL" Then
        If .FilterMode Then .ShowAllData
    Else
        .Range("A4:E10").AutoFilter 1, VisibleDropDown:=False
        .Range("A4:E10").AutoFilter 2, .Cells(2, 2), VisibleDropDown:=False
        .Range("A4:E10").AutoFilter 3, VisibleDropDown:=False
        .Range("A4:E10").AutoFilter 4, .Cells(2, 4), VisibleDropDown:=False
        .Range("A4:E10").AutoFilter 5, VisibleDropDown:=False
    End If
End With

End Sub

Результаты в:

enter image description here

Вы видите, как параметр VisibleDropDown скрывает раскрывающиеся стрелки. Вы можете оставить эти строки (и параметры), если это не имеет большого значения для ваших пользователей. По умолчанию установлено TRUE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...