gpt4 book ai didi

excel - 根据单元格值隐藏工作表上的多行

转载 作者:行者123 更新时间:2023-12-04 21:20:20 25 4
gpt4 key购买 nike

我正在尝试使用 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

第二:来自这里的代码:

Unhide rows based on cell value

使用这两种方法,似乎只有一种变化继续进行。因此单元格 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

评论后

我会根据您的评论将其分为两部分。第一个将观察下拉列表并在该单元格的更改上执行。第二个将使用计算事件进行更新。将这些 Subs 放在适用的工作表中
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

关于excel - 根据单元格值隐藏工作表上的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52893985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com