基于多个条件的过滤器不起作用(VBA)

时间:2017-07-24 10:52:05

标签: excel vba

我想根据包含存储在另一个电子表格中的三个标准之一来搜索和过滤我的数据中的列。例如,如果标准是“Albert”,“Bethany”和“Christine”,我希望它过滤包含三个名称的所有内容的特定列,因为所有三个标准都已填写。

下面有两个标准我的数组代码成功运行,但是,当包含第三个标准(lcriteria)时,它不允许我为三个标准中的任何一个找到匹配,即使先前找到了前两个标准。有谁知道可能是什么问题或者可以帮助我?

我在这里疯了......谢谢你!

这是我的代码:

If Not IsEmpty(Worksheets("Formstack").Range("M2")) Then
    jCriteria = Worksheets("Formstack").Range("L2")      
    kCriteria = Worksheets("Formstack").Range("M2")
    lCriteria = Worksheets("Formstack").Range("N2")

    critArr = Array("*" & jCriteria & "*", "*" & kCriteria & "*", "*" & lCriteria & "*")

    Worksheets("Data").Range("A1").AutoFilter Field:=1, Criteria1:=critArr, Operator:=xlFilterValues
End If

2 个答案:

答案 0 :(得分:0)

由于您想要读取单元格的值,我会使用.Value。所以在你的情况下:

lCriteria = Worksheets("Formstack").Range("N2").Value

如果这不能解决您的问题,我建议您调试代码并在运行时查看字符串中的内容,以检查它是否与您假设的一样。

答案 1 :(得分:0)

对于自定义过滤器,您不能超过2行 - 您可以通过尝试手动设置过滤器来检查:在对话框中只有2个字段。

有一种方法可以有两个以上的过滤器值,但它的工作方式不同。它被称为高级过滤器。关于Superuser有一个解释。您必须手动填写条件范围(引用工作表Formstack中的单元格)或VBA代码。