Фильтр по имени столбца все листы макрос - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь отфильтровать один и тот же столбец под названием «Местоположение» из всех листов рабочей книги. Фильтр будет таким же, в этом случае выбрав «ABM», «AKH» и «ACH». Столбец не находится на одной и той же позиции на всех листах.

Я пытался объединить некоторые коды, которые я нашел в Google, и это работало отдельно. Но в сочетании это работает только для одного листа. Я думаю, это как-то связано с тем, что «For» останавливается.

Sub AllSheetsAutofilter()
    Dim p As Integer, q As Integer
    p = Worksheets.Count
    Dim i As Integer, rngData As Range

    For q = 1 To p
        With Worksheets(q)
            Set rngData = Range("A1")
            i = Application.WorksheetFunction.Match("Location", Range("A1:AZ1"), 0)
            rngData.AutoFilter Field:=i, Criteria1:=Array("ABM", "AC8", "AKH", "ACH", "AC4"), Operator:=xlFilterValues
        End With
    Next q
End Sub

1 Ответ

1 голос
/ 09 июля 2019

Вы были близки.Это работает для меня:

Sub AllSheetsAutofilter()

    Dim p As Long, q As Long
    p = Worksheets.Count
    Dim i As Long, rngData As Range

    For q = 1 To p
        With Worksheets(q)
            Set rngData = .Cells
            i = Application.WorksheetFunction.Match("Location", .Range("A1:AZ1"), 0)
            rngData.AutoFilter Field:=i, Criteria1:=Array("ABM", "AC8", "AKH", "ACH", "AC4"), Operator:=xlFilterValues
        End With
    Next q

End Sub

Обратите внимание на использование Long и использование квалифицированных переменных.

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