Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用VBA在Excel的单个列中筛选多个条件?_Vba_Excel - Fatal编程技术网

如何使用VBA在Excel的单个列中筛选多个条件?

如何使用VBA在Excel的单个列中筛选多个条件?,vba,excel,Vba,Excel,我希望下面的代码能够工作,因为它来自 如果这是一个格式错误,我想纠正错误,而不是完全改变解决方案的方法。如果这种方法根本不起作用,那么我愿意尝试不同的方法 任何见解都将不胜感激 ActiveSheet.Range("$A:$AI").AutoFilter Field:=11, Criteria1:=Array("Namib", "Kitchen", _ "Constantia", "Painters", _

我希望下面的代码能够工作,因为它来自

如果这是一个格式错误,我想纠正错误,而不是完全改变解决方案的方法。如果这种方法根本不起作用,那么我愿意尝试不同的方法

任何见解都将不胜感激

 ActiveSheet.Range("$A:$AI").AutoFilter Field:=11, Criteria1:=Array("Namib", "Kitchen", _
                            "Constantia", "Painters", _
                            "CUSTOM", "Classic", _
                            "Bench"), _
            Operator:=xlFilterValues

您只能使用通配符筛选2个条件:

Range("$A:$AI").AutoFilter Field:=11, Criteria1:="=*Table*", Operator:=xlOr, Criteria2:="=*Chair*"
将筛选包含单词
表格
椅子
的所有数据。但这不适用于2个以上的标准

'THIS DOES NOT WORK:
Range("$A:$AI").AutoFilter Field:=11, Criteria1:=Array("*Namib*", "*Kitchen*", _
   "*Constantia*", "*Painters*", _
   "*CUSTOM*", "*Classic*", _
   "*Bench*"), _
     Operator:=xlFilterValues

请参阅:了解解决方法。

这里是另一个解决方法:

Sub FilterMultipleWildcards()
    Dim myCriteria As Variant, criterium As Variant
    Dim filteredRng As Range

    myCriteria = Array("Namib", "Kitchen", "Constantia", "Painters", "CUSTOM", "Classic", "Bench")

    With ActiveSheet
        With Intersect(.UsedRange, .Range("$A:$AI"))
            Set filteredRng = .Offset(, .Columns.Count).Resize(1, 1)
            For Each criterium In myCriteria
                .AutoFilter Field:=11, Criteria1:="=*" & criterium & "*"
                If Application.WorksheetFunction.Subtotal(103, .Resize(1)) > 1 Then Set filteredRng = Union(filteredRng, .Resize(.Rows.Count - 1, 1).Offset(1, 10).SpecialCells(xlCellTypeVisible))
            Next
            Set filteredRng = Intersect(filteredRng, .Cells)
            .Parent.AutoFilterMode = False
            .Resize(.Rows.Count - 1).Offset(1).EntireRow.Hidden = True
        End With
        filteredRng.EntireRow.Hidden = False
    End With
End Sub

谁的限制存在于由
Union()
method

所产生的范围的“容量”中?您使用的是什么版本的Excel?您的代码遇到了什么问题?对我来说,您的代码是有效的。但是,你确定你一直都在处理
ActiveSheet
吗?好的,谢谢你的支持,深入了解这一点,我意识到我真正想要的是一个过滤器,它将过滤掉包含列表中单词的所有单元格。i、 e.如果我提供的过滤器值是
椅子
沙发
;然后我想看看所有不同桌子、椅子和沙发的清单。视觉上:小桌子中桌子大桌子其他东西小椅子其他不想要的产品大沙发一些垃圾减少为:小桌子中桌子大桌子小椅子大沙发