繁体   English   中英

如何在VBA上使用IF条件自动筛选

[英]How to AutoFilter using IF conditions on VBA

我真的是VBA的新手,但是我陷入了无法在线查看的过滤功能。

我基本上建立了一个登录表单,该表单允许不同的用户登录后在“报告表”上看到不同的数据。在“报告表”中,我有两列“ P”和“ Q”,其中报告了一些名称。

比方说:

P      Q
User1  User2

Paul   Bob
Martin Martin
Bob    Bob
Tom    Martin
Ralph  Bob

然后,我在VBA上使用了以下代码:

Private Sub Worksheet_Activate()

Range("Report!$F$6:$Y$11").CurrentRegion.AutoFilter Field:=12, Criteria1:=Range("G3").Value

End Sub

** G3是名称的参考单元格*

现在,如果我使用该代码登录Bob,结果将是:

P      Q
User1  User2

Paul   Bob
Bob    Bob
Ralph  Bob

那是对的! 但是,如果我尝试用Paul登录,则没有结果可用,因为他不在Field:= 12(列“ Q”)上。

我想做这样的事情:如果Paul不在“ Q”列上,请停止过滤该列,然后开始过滤“ P”列。

我尝试过:

Private Sub Worksheet_Activate()

If Range("Report!$F$6:$Y$11").CurrentRegion.AutoFilter(Field:=12, Criteria1:=Range("G3").Value) Then 'do nothing

Else
Range("Report!$F$6:$Y$11").CurrentRegion.AutoFilter Field:=11, Criteria1:=Range("G3").Value

End If

End Sub 

但我真的不知道该说些什么来取得积极的结果。

在此先感谢所有对我有帮助的人。

您可以使用范围的查找方法来查看是否存在

Option Explicit
Public Sub test()
    Dim found As Range
    Set found = Worksheets("Report!").Range("$Q$6:$Q$11").Find(what:=Range("G3").Value, lookat:=xlWhole)

    If Not found Is Nothing Then
        ' Stuff with Field:=12, Criteria1:=Range("G3").Value)
    Else
      ' Stuff with Field:=11, Criteria1:=Range("G3").Value)
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM