使用VBA显示应用的自动筛选

时间:2018-02-12 09:19:21

标签: excel vba excel-vba

所以我正在研究一个使用AutoFilters的数据集。 该工作簿包含2个工作表,第2个工作簿包含所有数据和应用过滤器的选项,基于冻结的第1行,过滤每列的信息。 我希望在工作簿的第一个工作表中显示单元格,向用户显示应用了哪些过滤器,或者如果在过滤器部分中选择了“全选”,则显示空白单元格。

根据微软MVP Stephen Bullen的工作,我发现了一个用户定义的功能。代码如下:

Function DispCriteria(Rng As Range) As String
    Dim Filter As String

    Filter = ""
    On Error GoTo Done
    With Rng.Parent.AutoFilter
        If Intersect(Rng, .Range) Is Nothing Then GoTo Done
        With .Filters(Rng.Column - .Range.Column + 1)
            If Not .On Then GoTo Done
            Filter = .Criteria1
            Select Case .Operator
                Case xlAnd
                    Filter = Filter & " AND " & .Criteria2
                Case xlOr
                    Filter = Filter & " OR " & .Criteria2
            End Select
        End With
    End With
Done:
    DispCriteria = Filter
End Function

使用此功能似乎有效,显示:

  

= Filter1 OR = Filter2

作为我输入以下内容的单元格中的输出:

=DispCriteria(C:C)

其中Filter1&过滤器2将是活动过滤器,范围C:C将被指定为过滤器将要处理的必要范围。

但是,当我激活2个以上的过滤器(例如3个)时,输出将是一个空白单元而不是所需的:

  

= Filter1 OR = Filter2 OR = Filter3

我对该功能的工作原理并不了解,也无法找到任何其他信息。我尝试调整它以允许超过2个过滤器显示,没有成功。任何帮助将不胜感激。

0 个答案:

没有答案