我有一个工作表,其中包含所有经理及其员工的姓名,理想情况下,此工作表需要工作的方式是左上角有一个下拉列表,当经理选择他们的名字时,所有行都没有他们的名称被隐藏,因此只显示他们的团队。
我知道自动过滤并让他们选择他们的名字是最简单的方法,并且是一个很好的选择,但我希望有一种方法可以用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
如果不使用自动过滤器如何做到这一点的任何想法都会很棒
鉴于以下假设:
将以下代码放入数据表的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
使用带有显示/隐藏您要显示的行的调用的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....
“子程序
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
我有这些数据,其中我在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
在这里,我从Field-2的下拉过滤器中选择名为“0”的选项,即Range A4,正如您所说,其他单元格自动隐藏,并且与该条件对应的单元格仅可见。 我也尝试了其他选项“1”。
这似乎是一种非常困难或涉及的方式,我必须向学生展示他们的成绩,而不会看到其他学生的成绩。
因此,一张纸具有所有数据,在“前面”表格中,我使用index()和match()调用特定学生的相关数据。每个学生都有一个输入的身份证号码,然后确认姓名将返回相关等级。