Несколько фильтров VBA, примененных через пользовательский ввод - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь создать макрос с набором данных ниже, где пользователь может ввести число стран, которые он хочет отфильтровать, а затем ввести название стран для фильтрации из списка.

[Dataset

Мне нужен макрос, позволяющий мне применять несколько фильтров (в зависимости от количества стран). До сих пор мне удалось написать код, который позволяет мне вводить все детали ввода для стольких стран, сколько я хочу, но отображает только одну фильтруемую страну, которую можно увидеть ниже.

My Attempted Result

Но если я въеду в 2 страны, я бы хотел, чтобы макрос в идеале выплевал приведенный ниже результат:

Ideal Result

Код макроса, который я использовал, также можно найти здесь,

Sub autofilter()

Dim wbCopyTo As Workbook
Dim wsCopyTo As Worksheet
Dim LastRow As Long
Dim irow As Integer
Dim k As Integer
Dim n As Integer
Dim userinput(51) As Variant
'Dim userinput As Variant
Dim userinput2 As Variant
Dim storage As Variant

Set wbCopyTo = ActiveWorkbook
Set wsCopyTo = ActiveWorkbook.Worksheets("Countries")

LastRow = wsCopyTo.Cells(Rows.Count, "B").End(xlUp).Row

userinput2 = InputBox("How many Countries do you want to include?")
If StrPtr(userinput2) = 0 Then
    Exit Sub
Else
End If
For k = 1 To userinput2
    userinput(k) = InputBox("What Countries to include?")
    If StrPtr(userinput(k)) = 0 Then
        Exit For
    End If
Next k
i = 0
For ik = 1 To userinput2
    wsCopyTo.Range("$C$3:$C$" & LastRow).autofilter Field:=1, Criteria1:=Array("*" & userinput(ik) & "*", " "), Operator:=xlFilterValues
Next ik
End Sub

1 Ответ

0 голосов
/ 17 января 2020

Попробуйте ...

, удалив For ik l oop

И заменив [...]Criteria:=Array("*" & userinput(ik) & "*", " "), [...]

на [...]Criteria1:=userinput, [...]

...