[英]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.