2015-04-02 2 views
1
ActiveSheet.Range("F_Item").AutoFilter Field:=1, Criteria1:=Array("ca*", "inc*", "ps*"), Operator:=xlFilterValues 

Я пытаюсь фильтровать колонки с несколькими критериями, используя массив, условие для фильтрации значений, который начинается с ca или начинается с inc, или начинаются с ps.VBA Автофильтр (Текстовые фильтры) с многократными Критериями «начинаются с»

ActiveSheet.Range("F_Item").AutoFilter Field:=1, Criteria1:="=ca*", Operator:=xlOr, Criteria2:="=inc*" 

Он работает таким образом, но ограничивается поиском только двух условий.

ответ

1

с данными, такими как:

enter image description here

Запуск этого макроса:

Sub WildAutofilter() 
    Dim data As Range, c As Collection 
    Dim v As String, i As Long, ary 
    Set data = Range("A1:A23") 
    Set c = New Collection 

    On Error Resume Next 
     For i = 2 To 23 
      v = Cells(i, 1).Value 
      If Left(v, 2) = "ps" Or Left(v, 2) = "ca" Or Left(v, 3) = "inc" Then 
       c.Add v, CStr(v) 
      End If 
     Next i 
    On Error GoTo 0 

    ReDim ary(0 To c.Count - 1) 
    For i = 1 To c.Count 
     ary(i - 1) = c.Item(i) 
    Next i 

    With ActiveSheet.Range("$A$1:$A$23") 
     .AutoFilter Field:=1, Criteria1:=(ary), Operator:=xlFilterValues 
    End With 
End Sub 

произведут:

enter image description here

+0

Спасибо, чувак, его работа для меня, хороший подход :) Но я задавался вопросом, не возможно ли это сделать одну линию, например, фильтрацию с помощью * – Abhii

1

Попробуйте использовать Advance фильтр

Range("C3:C20").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
    Range("D3:D6"), Unique:=False 
Смежные вопросы