Excel VBA:具有多个条件的自动筛选,仅按数组中的最后一个条目进行筛选

Excel VBA:具有多个条件的自动筛选,仅按数组中的最后一个条目进行筛选,excel,autofilter,vba,Excel,Autofilter,Vba,我正在尝试根据数字进行自动筛选。我可以通过转换为字符串来搜索列中的匹配项,但过滤会变得更复杂 我已经设置了代码,所以如果要筛选的列是数字,它将循环遍历它们,并将包含“xxx”的任何列添加到数组中(每个列的第一个实例)。然后,我将此数组用作自动筛选的条件 问题来自自动筛选命令。如果仅使用数组作为条件,则它仅按数组中的最后一项进行过滤。如果将xlFilterValues作为运算符添加,则不会得到任何结果 如何正确地使数组(变量)作为标准工作?我也尝试过高级过滤器,但遇到运行时错误 谢谢 相关代码:

我正在尝试根据数字进行自动筛选。我可以通过转换为字符串来搜索列中的匹配项,但过滤会变得更复杂

我已经设置了代码,所以如果要筛选的列是数字,它将循环遍历它们,并将包含“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
如果是isInCol,则“按所选列过滤表格”;使用范围排序
使用ActiveSheet
如果sortField=10或sortField=21,则“按搜索数组排序”
'对值进行排序,将匹配项添加到数组
对于filterColumn中的每个foo
如果仪表(CStr(食物值)、过滤器文本),则
如果arrayCounter=0,则
sortKeyNum(arrayCounter)=CDbl(foo.Value)
arrayCounter=arrayCounter+1
ElseIf foo.Value sortKeyNum(arrayCounter-1)然后
sortKeyNum(arrayCounter)=CDbl(foo.Value)
arrayCounter=arrayCounter+1
如果结束
如果结束
下一个富
ReDim reserve sortKeyNum(arrayCounter-1)
currentData.AutoFilter字段:=sortField,Criteria1:=sortKeyNum,运算符:=xlFilterValues',VisibleDropDown:=False
'注意:^^^^这是我的代码失败的地方^^^^
其他的
currentData.AutoFilter字段:=sortField,Criteria1:=sortKey',VisibleDropDown:=False
如果结束
currentData.Sort key1:=filterColumn,Order1:=sortOrder,Header:=xlYes
以
如果结束
所以我找到了

显然,当使用数组自动筛选列时,即使要筛选数字,也必须使用字符串格式。我将sortKeyNum更改为字符串数组,它可以按预期工作