根据 2 个条件隐藏单元格
Hide cells based on 2 criteria
我正在尝试根据 2 个不同的单元格值隐藏行。我在单元格 B2 中有一个值,想隐藏 B5:B1000 中不符合条件的任何内容。我在单元格 D2 中也有一个值可以进一步排序,我想隐藏 D5:D1000 中与 D2 中的条件不匹配的任何内容。更复杂的是,如果用户在 B2 或 D2 中输入 "All",我想取消隐藏它们各自的行。我发现 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
。
我正在尝试根据 2 个不同的单元格值隐藏行。我在单元格 B2 中有一个值,想隐藏 B5:B1000 中不符合条件的任何内容。我在单元格 D2 中也有一个值可以进一步排序,我想隐藏 D5:D1000 中与 D2 中的条件不匹配的任何内容。更复杂的是,如果用户在 B2 或 D2 中输入 "All",我想取消隐藏它们各自的行。我发现 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
。