Excel VBA код для приближенного фильтра данных со списком значений - PullRequest
1 голос
/ 25 июня 2019

Мой текущий код фильтра только точное совпадение из списка критериев фильтра. Не могли бы вы помочь в изменении кода для фильтра приблизительного соответствия из списка Emp Я перечислил код ниже. Быстрое исправление будет высоко ценится. Спасибо

Sub Filter_My_Data()

Dim Data_sh As Worksheet
Dim Filter_Criteria_Sh As Worksheet
Dim Output_sh As Worksheet


Set Data_sh = ThisWorkbook.Sheets("Data")
Set Filter_Criteria_Sh = ThisWorkbook.Sheets("Filter_Criteria")
Set Output_sh = ThisWorkbook.Sheets("Output")


Output_sh.UsedRange.Clear


Data_sh.AutoFilterMode = False

Dim Emp_list() As String
Dim n As Integer

n = Application.WorksheetFunction.CountA(Filter_Criteria_Sh.Range("A:A")) - 2

ReDim Emp_list(n) As String

Dim i As Integer

For i = 0 To n
    Emp_list(i) = Filter_Criteria_Sh.Range("A" & i + 2)

Next i


Data_sh.UsedRange.AutoFilter 12, Emp_list(), xlFilterValues


Data_sh.UsedRange.Copy Output_sh.Range("A1")

Data_sh.AutoFilterMode = False


MsgBox ("Data has been Copied")

End Sub

1 Ответ

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

Вы можете использовать только подстановочные знаки с максимум двумя выражениями.

AutoFilter Field:=1, Criteria1:="=*foo*", Operator:=xlOr, Criteria2:="=*bar*"

Вы не можете делать это с массивом значений

AutoFilter Field:=1, Criteria1:=Array("*foo*", "*bar*"), Operator:=xlFilterValues

будет возвращать только точные совпадения.

Если вы хотите сделать это в коде, вам понадобится альтернативный метод.

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