简体   繁体   English

尝试根据某些单元格值在Excel中隐藏行

[英]Trying to hide rows in Excel based on certain cell values

I am looking around for a formula to hide certain rows based on certain cell inputs. 我正在寻找一个公式来隐藏基于某些单元格输入的某些行。 In cell C5 I have a drop-down selection of " Corporates " and " Projects ". 在单元格C5 ,有一个下拉列表,分别为“ Corporates ”和“ Projects ”。 In cell C8 I have a drop-down selection of " High ", " Medium ", and " Low ". 在单元格C8我有一个下拉选择:“ High ”,“ Medium ”和“ Low ”。 In cell H6 I have the formula =C5&C8 . 在单元格H6我的公式为=C5&C8 The macro I have is as follows: 我拥有的宏如下:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "H6" Then
    Select Case Target.Value
        Case "CorporatesHigh": Rows("21:33").Hidden = True: Rows("12:20").Hidden = False
        Case "CorporatesMedium": Rows("21:33").Hidden = True: Rows("12:20").Hidden = False
        Case "CorporatesLow": Rows("25:33").Hidden = True: Rows("12:24").Hidden = False
        Case "ProjectsHigh": Rows("25:28").Hidden = False: Rows("29:33").Hidden = True: Rows("12:24").Hidden = True
        Case "ProjectsMedium": Rows("25:28").Hidden = False: Rows("29:33").Hidden = True: Rows("12:24").Hidden = True
        Case "ProjectsLow": Rows("25:33").Hidden = False: Rows("12:24").Hidden = True
        Case "": Rows("12:33").Hidden = False
        Case "Corporates": Rows("12:33").Hidden = False
        Case "Projects": Rows("12:33").Hidden = False
        Case "High": Rows("12:33").Hidden = False
        Case "Medium": Rows("12:33").Hidden = False
        Case "Low": Rows("12:33").Hidden = False
    End Select
End If
End Sub

The macro works when I click into H6 but I need it to work when cells C5 or C8 is changed. 当我单击H6时,宏起作用,但是当单元格C5C8更改时,我需要它起作用。

The If-Not-Intersect-Is Nothing pattern is the preferred way to check if the changed cells(s) are inside a given range of cell(s). If-Not-Intersect-Is Nothing模式是检查更改的单元格是否在给定单元格范围内的首选方法。

To handle all three of your cells, you can use the following. 要处理所有三个单元,可以使用以下命令。 You can easily add or remove cells to the Range if you want. 您可以根据需要轻松地将单元格添加或删除到“ Range

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H6,C5,C8")) Is Nothing Then
        Select Case Range("H6").Value
            Case "CorporatesHigh": Rows("21:33").Hidden = True: Rows("12:20").Hidden = False
            Case "CorporatesMedium": Rows("21:33").Hidden = True: Rows("12:20").Hidden = False
            Case "CorporatesLow": Rows("25:33").Hidden = True: Rows("12:24").Hidden = False
            Case "ProjectsHigh": Rows("25:28").Hidden = False: Rows("29:33").Hidden = True: Rows("12:24").Hidden = True
            Case "ProjectsMedium": Rows("25:28").Hidden = False: Rows("29:33").Hidden = True: Rows("12:24").Hidden = True
            Case "ProjectsLow": Rows("25:33").Hidden = False: Rows("12:24").Hidden = True
            Case "": Rows("12:33").Hidden = False
            Case "Corporates": Rows("12:33").Hidden = False
            Case "Projects": Rows("12:33").Hidden = False
            Case "High": Rows("12:33").Hidden = False
            Case "Medium": Rows("12:33").Hidden = False
            Case "Low": Rows("12:33").Hidden = False
        End Select
    End If
End Sub

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

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