用于根据单元格的值隐藏行的公式

问题描述 投票:0回答:4

我有一个工作表,其中包含所有经理及其员工的姓名,理想情况下,此工作表需要工作的方式是左上角有一个下拉列表,当经理选择他们的名字时,所有行都没有他们的名称被隐藏,因此只显示他们的团队。

我知道自动过滤并让他们选择他们的名字是最简单的方法,并且是一个很好的选择,但我希望有一种方法可以用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

如果不使用自动过滤器如何做到这一点的任何想法都会很棒

excel vba excel-formula
4个回答
1
投票

鉴于以下假设:

  • 使用Manager名称下拉是在单元格A1中
  • 每行的列列表管理器名称位于A列中
  • 数据集从第5行开始
  • A列是连续的,没有空格

将以下代码放入数据表的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

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....

“子程序

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

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

在这里,我从Field-2的下拉过滤器中选择名为“0”的选项,即Range A4,正如您所说,其他单元格自动隐藏,并且与该条件对应的单元格仅可见。 我也尝试了其他选项“1”。


0
投票

这似乎是一种非常困难或涉及的方式,我必须向学生展示他们的成绩,而不会看到其他学生的成绩。

因此,一张纸具有所有数据,在“前面”表格中,我使用index()和match()调用特定学生的相关数据。每个学生都有一个输入的身份证号码,然后确认姓名将返回相关等级。

© www.soinside.com 2019 - 2024. All rights reserved.