我尝试创建UDF以根据一个或多个条件过滤范围。我使用Function
而不是Sub
的原因是我希望能够直接从工作表中使用它,只需选择要过滤的条件和字段。
这就是我得到的:
Function FilterTable(Criteria As Range, Table As Range, Column As
Integer)
Dim cell As Range
Dim arrList() As String, lngCnt As Long
Application.Volatile
lngCnt = 0
For Each cell In Criteria.SpecialCells(xlCellTypeVisible)
ReDim Preserve arrList(lngCnt)
arrList(lngCnt) = cell.Text
lngCnt = lngCnt + 1
Next
With ActiveSheet
If .FilterMode Then .ShowAllData
Table.AutoFilter Field:=Column, Criteria1:=arrList, Operator:=xlFilterValues
End With
End Function
我遇到的问题是:
1-当UDF在一个单元格上时,我无法撤消过滤器(由于UDF在我删除过滤器后重新应用过滤器,因此有点预期)是否有办法删除此& #34;限制&#34 ;?现在我在单元格中使用IF公式,但我想知道UDF是否只能使用一次。
2-如果工作表中有先前过滤的范围,则会过滤该范围(.ShowAllData不能正常工作);
3-有时,如果我删除UDF并将滤镜应用到另一个范围,则之前的UDF滤波范围将变为隐藏(例如,在将滤镜应用到另一个范围后,UDF滤镜会隐藏第3~5行,这些线仍将被隐藏,并且只有在取消隐藏在上下文菜单中后才会再次出现。)
那么,有人可以帮我这个吗?提前谢谢!