所以我正在研究一个使用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个过滤器显示,没有成功。任何帮助将不胜感激。