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

时间:2014-09-24 19:01:19

标签: excel-vba autofilter vba excel

我正在尝试根据数字进行自动过滤。我可以通过转换为字符串来搜索列匹配,但过滤会变得更加棘手。

我设置了代码,所以如果要过滤的列是数字,它会遍历它们并将包含“xxx”的任何内容添加到数组中(每个的第一个实例)。然后我使用这个数组作为我的自动过滤器的标准。

问题来自autofilter命令。如果我只使用数组作为条件,它只会按数组中的最后一项进行过滤。如果我将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

1 个答案:

答案 0 :(得分:0)

所以我找到了this

显然,当使用数组自动过滤列时,即使您正在过滤数字,也必须采用字符串格式。我将sortKeyNum更改为一个字符串数组,它按预期工作。