好的,我有一堵砖墙,对我来说是一堵大墙,但对你们来说却是一堵小墙,所以我在寻求帮助。
我有一个电子表格,在不同的行上有110个问题,我要求潜在员工和现有员工在下一列中回答Y或N,然后我用它来突出显示各种弱点或发展领域,这样我就可以为他们建立职业生涯和培训路径。然后,在第二个选项卡上,使用公式,表1中的Y和N用红色和绿色填充图表,红色和绿色通常表示员工是否具有较强的技术能力,需要提高他们的软技能,反之亦然。
我需要你在TAB 3上的帮助。Tab 3将会有一个“建议读数”列表和训练,以纠正他们可能在TAB 1上回答的N。TAB 1称为问题TAB 2称为图表TAB 3称为反馈
所以,在TAB3中,在单元格B9中,我愚蠢的思维方式是...IF QUESTIONS, C9 = "Y" THEN HIDE FEEDBACK B9。
发布于 2012-12-16 22:00:15
那么,您要的是逻辑还是VBA字符串?
因为您的逻辑是正确的,而对于VBA,它可能是这样的
Sub HideRows()
For i = 1 to RowCount 'Change RowCount to however many rows there are in Questions & Feedback
If Sheets("Questions").Range("B"& i) = "Y" Then
Sheets("Feedback").Rows(i).Hidden = True
End If
Next i
End Sub..if我对你的理解是正确的
发布于 2012-12-16 22:50:55
你也可以使用命名范围,如果你的一些响应显示/隐藏了多行,这意味着你不必硬编码它们,你可以编辑命名范围。
为了让我的示例代码正常工作,您需要将命名范围的“名称”写在与问题相同的行的第三列中。
Public Enum HiddenState
Hidden = 0
Shown = 1
Toggle = 2
End Enum
Public Sub Toggle(ByVal Name As String, Optional ByVal State As HiddenState = HiddenState.Toggle)
Dim Row As Variant
For Each Row In Names(Name).RefersToRange.Rows
If State = Toggle Then
Row.Hidden = Not Row.Hidden
Else
If State = Shown Then Row.Hidden = False Else Row.Hidden = True
End If
Next
End Sub
Public Sub SetFeedback()
Dim Index As Integer
Dim RowCount As Integer
RowCount = 10 ' Change This
For Index = 1 To RowCount
If Sheets("Questions").Cells(2, Index) = "Y" Then
Toggle Sheets("Questions").Cells(3, Index), Hidden
Else
Toggle Sheets("Questions").Cells(3, Index), Shown
End If
Next Index
End Sub您需要将此代码添加到新模块中,如果要显式隐藏和取消隐藏行,则不需要HiddenState位。
https://stackoverflow.com/questions/13900578
复制相似问题