【发布时间】:2015-10-29 13:15:36
【问题描述】:
我想运行一个程序来保存自动过滤器设置、执行操作、可能编辑过滤器然后重新应用它。
我正在使用以下代码来保存自动过滤数据:
With ActiveSheet.AutoFilter
Set filtRange = .Range
With .Filters
fieldNumber = .Count
ReDim filtArray(1 To fieldNumber, 1 To 4)
For f = 1 To fieldNumber
With .Item(f)
If .On Then
filtArray(f, 1) = 1
filtArray(f, 2) = .Operator
filtArray(f, 3) = Criteria1
If .Operator <= 2 And .Operator > 0 Then
filtArray(f, 4) = Criteria2
End If
End If
End With
Next f
End With
End With
我的问题是标准没有像输入时那样保存。例如前 10 个过滤器,您可以在 Criteria1 字段中输入 10 并使用 xlTop10items 运算符。但是使用这种方法会返回Criteria1,例如>=50,如果 50 是第十个最高值。
我可以实现一个很长的过程,从这个开始,计算出 50 的排名,然后推断这是一个前 10 个过滤器(而不是前 5 个),因为我知道它是一个顶部来自操作员的 X 过滤器,但有没有更好的方法来获取此信息?
我需要此信息的原因是我想重新应用过滤器,同时尽可能减少信息丢失,即用户不应该注意到它已更改。例如,我可能还需要将前 10 个过滤器更改为前 (10 - X) 个过滤器等。
我使用了前 10 个过滤器作为示例,但存在高于/低于平均水平的类似问题 - 返回 >=X/<=Y。
此外,它根本不适用于图标过滤,但我认为这对我来说不是一个主要问题,因为不太可能遇到它。
【问题讨论】:
标签: vba excel autofilter