繁体   English   中英

根据 2 个条件隐藏单元格

[英]Hide cells based on 2 criteria

我试图隐藏基于 2 个不同单元格值的行。 我在单元格 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

根据我的评论,您可能想尝试Range.AutoFilter 想象以下数据:

在此处输入图片说明

运行以下代码:

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

结果是:

在此处输入图片说明

您会看到VisibleDropDown参数如何隐藏下拉箭头。 如果这对您的用户来说不是什么大问题,您可以保留这些行(和参数)。 默认设置为TRUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM