使用Excel VBA +数组过滤表

下午好,Stack Over天才。我目前在尝试使用数组过滤表时遇到一个问题。我认为问题可能出在我如何设置阵列上,但我不确定。下面的代码当前正在运行,但是没有按我认为的那样过滤有问题的表。

Sub DataQuery()

    Dim wordDict As Object: Set wordDict = CreateObject("Scripting.Dictionary")
    Dim i,x As Integer
    Dim searchCol,searchText,demoText As String
    Dim searchVals() As String

    searchCol = "I"
    i = 3

    With Sheets("Query Sheet")
        searchText = Range(searchCol & i).Value
        searchVals() = Split(searchText,"|")
        For x = LBound(searchVals) To UBound(searchVals)

            Sheets("Total_Data").Range("A1").AutoFilter _
                Field:=2,_
                Criteria1:=searchVals(x),_
                Operator:=xlFilterValues
        Next x
    End With
End Sub

为了提供一些背景信息,我有一个单元格,其中带有以下文本:11/5/2019 | 11/6/2019 | 11/7/2019。我正尝试在您看到Split(…)代码的地方用该管道定界符将文本分开,然后在循环中使用这些值中的每一个将多个过滤器添加到表的单个列上。

你们都可以帮我吗?我已经尝试了很多事情,例如重命名数组,使用脚本字典将它们声明为变量,但是似乎没有任何正常工作。

谢谢!

lizihao3hao 回答:使用Excel VBA +数组过滤表

因此,显然,对于数组,我只是有点傻。我对您看到“自动筛选...”的代码做了一点改动。

Sub DataQuery()

    Dim i,x As Integer
    Dim searchCol,searchText,demoText As String
    Dim searchVals

    searchCol = "I"
    i = 3

    With Sheets("Query Sheet")
        searchText = .Range(searchCol & i).Value
        MsgBox searchText
        searchVals = Split(searchText,"|")
        Sheets("Total_Data").Range("A1").AutoFilter _
            Field:=2,_
            Criteria1:=searchVals,_
            Operator:=xlFilterValues
    End With
End Sub

更改为不通过searchVals(x)进行过滤,而是立即使用整个数组来解决此问题。

感谢您的所有帮助!

本文链接:https://www.f2er.com/3093042.html

大家都在问