【发布时间】:2023-03-18 16:32:01
【问题描述】:
我正在尝试根据数字进行自动过滤。我可以通过转换为字符串来搜索匹配的列,但过滤会变得更棘手。
我已经设置了代码,所以如果要过滤的列是数字,它会循环遍历它们并将包含“xxx”的任何内容添加到数组中(每个列的第一个实例)。然后我使用这个数组作为我的自动过滤器的标准。
问题来自自动过滤器命令。如果我只使用数组作为条件,它只会按数组中的最后一项过滤。如果我将 xlFilterValues 添加为运算符,则不会得到任何结果。
如何正确地将数组(变量)用作标准?我也尝试过高级过滤器,但遇到了运行时错误。
谢谢
相关代码:
If isInCol Then ' filter the table by the selected col; Use Range Sort
With ActiveSheet
If sortField = 10 Or sortField = 21 Then ' sort by a searched array
' sort through values, add matching to array
For Each foo In filterColumn
If InStr(CStr(foo.Value), filterText) Then
If arrayCounter = 0 Then
sortKeyNum(arrayCounter) = CDbl(foo.Value)
arrayCounter = arrayCounter + 1
ElseIf foo.Value <> sortKeyNum(arrayCounter - 1) Then
sortKeyNum(arrayCounter) = CDbl(foo.Value)
arrayCounter = arrayCounter + 1
End If
End If
Next foo
ReDim Preserve sortKeyNum(arrayCounter - 1)
currentData.AutoFilter Field:=sortField, Criteria1:=sortKeyNum, Operator:=xlFilterValues ' , VisibleDropDown:=False
' NOTE: ^^^^THIS IS WHERE MY CODE IS FAILING^^^^
Else
currentData.AutoFilter Field:=sortField, Criteria1:=sortKey ' , VisibleDropDown:=False
End If
currentData.Sort key1:=filterColumn, Order1:=sortOrder, Header:=xlYes
End With
End If
【问题讨论】:
标签: excel autofilter vba