我有一个工作表,其中包含所有经理及其员工的姓名,理想情况下,此工作表需要工作的方式是左上角有一个下拉菜单,当经理选择他们的名字时,所有行都不要&# 39;他们的名字是反对的,是隐藏的,因此只显示他们的团队。
我知道自动过滤并让他们选择他们的名字是最简单的方法,并且是一个很好的选择,但是我希望有一种方法可以用VBA或公式来隐藏当他们在下拉列表中选择他们的名字时,不是他们的团队的行。因为我正在努力创造一些非常光滑且看起来不错的东西
我确实试图做一些事情,如果名字匹配,有一个辅助单元格显示true和false,但此时有点卡住了。尝试使用下面的代码,但它似乎并没有做任何事情。具有TRUE / FALSE的列在Col A
中Sub TEST()
Dim cell As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each cell In Range("A4:A34")
If cell.Value = "FALSE" Then
cell.EntireRow.Hidden = True
Else
cell.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
关于如何在不使用自动过滤器的情况下执行此操作的任何想法都会很棒
答案 0 :(得分:1)
考虑以下假设:
将以下代码放入数据表的Worksheet
模块中,并更改假设以适合您的数据集。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" and Target.Cells.Count = 1 Then
Application.ScreenUpdating = False
Range("A5:A1000").EntireRow.Hidden = False
Dim mgrList as Range
Set mgrList = Range(Range("A5"),Range("A5").End(xlDown))
Dim mgrCheck as Range
For each mgrCheck in mgrList
mgrCheck.EntireRow.Hidden = mgrCheck <> Target
Next
End If
End Sub
答案 1 :(得分:0)
使用带有显示/隐藏您要显示的行的调用的if then else语句。
If Range("A1").Value = "John Snow" Then
Call Show_John_Snow
Else
If Range("A1").Value = "Daenerys Targaryen" Then
Call Show_Daenerys
Else....
&#39;子程序
Show_John_Snow
Rows("17:20").EntireRow.Hidden = True 'hide others
Rows("21:53").EntireRow.Hidden = False 'show John Snow
Rows("54:75").EntireRow.Hidden = True 'hide others
答案 2 :(得分:0)
我有这些数据,其中我在A3:D3处有标题,数据从第4行开始到99.
我尝试应用Autofilter,检查这个是否适合你。
Sub test()
Range("A3:D3").Select
Selection.AutoFilter
ActiveSheet.Range("A3:D99").AutoFilter Field:=2, Criteria1:="0"
ActiveSheet.Range("A3:D99").AutoFilter Field:=2, Criteria1:="1"
End Sub
在这里,我选择了名为&#34; 0&#34;的选项。来自Field-2的下拉过滤器,即Range A4,正如您所说,其他单元格会自动隐藏,并且与该条件对应的单元格仅可见。 我还尝试了其他选项&#34; 1&#34;。
答案 3 :(得分:0)
这似乎是一种非常困难或涉及的方式,我必须向学生展示他们的成绩而不会看到其他学生的成绩。
因此,一张工作表包含所有数据,在“前面”工作表上,我使用index()和match()调用特定学生的相关数据。每个学生都有一个输入的身份证号码,然后进行确认,然后返回相应的成绩。