Диапазон критериев автофильтра Не ​​брать массив - PullRequest
1 голос
/ 29 июня 2019

1 . У меня есть данные на одном листе, и я хочу отфильтровать список критериев в другом столбце

2 . Я хочу, чтобы критерии были также в отдельном WS

Я включил 2 отдельных кода ниже

  1. код для того же списка листов Массив

    Sub FilterTeams()
    
    Dim LastRow As Long
    
    LastRow = Range("A" & Rows.Count).End(xlUp).Row
    
    ActiveSheet.Range("A1:H" & LastRow).AutoFilter Field:=3, Criteria1:="=*" & Range("Q1") & "*"
    
    End Sub
    
  2. массив списков на другом листе код детали

    Sub Filter()
    
    Dim Criteria As Variant
    Criteria = Worksheets("Sheet1").Range("A1:A140")
    Worksheets("AP").Range("$A$1:$h$100").AutoFilter Field:=3, Criteria1:=Criteria, Operator:=xlFilterValues
    
    End Sub
    

фильтрует только первое значение, а не все значения в столбце

(он должен фильтровать все содержащиеся в нем значения)

1 Ответ

0 голосов
/ 29 июня 2019

Проблема: Вы определяете свой array из Range, который дает вам 2D array, который вы не можете легко передать в Autofilter. Таким образом, мы должны изменить его на 1D Array.

Решение: Измените свой второй код на:

Sub Filter()

Dim Criteria As Variant
Dim cri() As String

Criteria = Worksheets("Sheet1").Range("A1:A140")

ReDim Preserve cri(UBound(Criteria))

For I = LBound(Criteria) To UBound(Criteria)

    cri(I) = Criteria(I, 1)

Next

Worksheets("AP").Range("$A$1:$h$100").AutoFilter Field:=1, Criteria1:=cri, Operator:=xlFilterValues

End Sub

Альтернатива: Код, который вы используете, является Фиксированным кодом. Существует один динамический код, который также может быть полезен для вас. Проверьте это Ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...