[英]Hide multiple rows on sheet based on cell value
我正在尝试使用Excel 2013在单元格为某个值时隐藏和取消隐藏行。
这种形式应该根据给出的答案进行扩展。
当C16 = YES隐藏行18:22
当C16 = NO时隐藏行24:38
当C16 =空白时隐藏行18:38
当L43 = YES时,取消隐藏第43:68行(如果不是,则显示零)
我尝试了2种方法。
第一:进入工作表-在右上角的下拉菜单中选择更改
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A18:A22").EntireRow.Hidden = (Range("$C$16").Value = "Yes")
Range("A24:A38").EntireRow.Hidden = (Range("$C$16").Value = "NO")
Range("A18:A38").EntireRow.Hidden = (Range("$C$16").Value = "")
Range("A43:A68").EntireRow.Hidden = (Range("$L$43").Value = "0")
End Sub
第二:来自这里的代码:
使用这两种方法,似乎只有一项更改正在进行。 因此,单元格C16发生了变化,但这意味着范围L43被忽略了
同样,当单元格为空白时,它什么也没有改变。 它保持原样,并且没有按要求隐藏列。
您的范围会重叠,因此即使C16 = "Yes"
,行C16 = ""
也会覆盖并取消隐藏它。 L42
可能也是一个数字,在将其与文本值进行比较时,请尝试使用以下内容。 您的代码也将在工作表中的每个更改上运行,因此也将其更新为仅在C16
或L43
更改时运行
Private Sub Worksheet_Change(ByVal Target As Range)
With Me
If Not Intersect(Target, Union(.Range("C16"), .Range("L43"))) Is Nothing Then
.Range("A18:A38").EntireRow.Hidden = False
Select Case LCase(.Range("C16").Value2)
Case "yes"
.Range("A18:A22").EntireRow.Hidden = True
Case "no"
.Range("A24:A38").EntireRow.Hidden = True
Case Else
.Range("A18:A38").EntireRow.Hidden = True
End Select
.Range("A43:A68").EntireRow.Hidden = False
Select Case LCase(.Range("L43").Value2)
Case "yes"
.Range("A43:A68").EntireRow.Hidden = False
Case Else
.Range("A43:A68").EntireRow.Hidden = True
End Select
End If
End With
End Sub
评论后
根据您的评论,我将其分为两部分。 第一个将监视下拉列表并在该单元格的更改上执行。 第二个将使用calculate事件进行更新。 将这些潜艇放在适用的表格中
Private Sub Worksheet_Change(ByVal Target As Range)
With Me
If Not Intersect(Target, Union(.Range("C16"), .Range("L43"))) Is Nothing Then
.Range("A18:A38").EntireRow.Hidden = False
Select Case LCase(.Range("C16").Value2)
Case "yes"
.Range("A18:A22").EntireRow.Hidden = True
Case "no"
.Range("A24:A38").EntireRow.Hidden = True
Case Else
.Range("A18:A38").EntireRow.Hidden = True
End Select
End If
End With
End Sub
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
With Me
.Range("A43:A68").EntireRow.Hidden = False
Select Case LCase(.Range("L43").Value2)
Case "yes"
.Range("A43:A68").EntireRow.Hidden = False
Case Else
.Range("A43:A68").EntireRow.Hidden = True
End Select
End With
Application.EnableEvents = True
End Sub
尝试:
With Worksheets("Sheet1")
.Rows("18:68").EntireRow.Hidden = False
opt = UCase(.Range("C16").Value)
Select Case opt
Case "YES"
Rows("18:22").EntireRow.Hidden = True
Case "NO"
Rows("24:38").EntireRow.Hidden = True
Case ""
Rows("18:38").EntireRow.Hidden = True
Case Else
MsgBox "Invalid option in cell C16."
End Select
If UCase(.Range("L43").Value) = "Yes" Then
Rows("43:68").EntireRow.Hidden = True
Else
MsgBox "Invalid option in cell L43."
End Select
End With
...虽然我不明白您想设为0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.