Я довольно новичок в VBA, и я все еще участвую в фазе обучения.Динамические фильтры (разные строки) для нескольких листов (разные листы в одной книге) VBA- Solved
У меня есть лист под названием «Anwendung» в книге, где в столбце AI есть разные поля, на основе которых я фильтрую. В этом случае это будет «Anwendung». Для этого я сумел Google и настроить определенную часть кода, и код выглядит следующим образом
Sub DynamicFilter()
SearchCol = "Typ"
SearchFor = "Anwendung"
Set rng1 = ActiveSheet.UsedRange.Find(SearchCol, , xlValues, xlWhole)
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=rng1.Column, Criteria1:=SearchFor
End Sub
Теперь у меня есть несколько других листов в книге, где мне нужно фильтровать их в соответствии с другими строками для например «Ressourcen» в колонке AI. С вышеуказанным кодом я могу просто применить его для активного листа, а не для всей рабочей книги.
Если я определяю Dim ws As Worksheet
, а затем запустите цикл for. Затем он фильтрует все листы в книге с помощью «Anwendung» в качестве критериев фильтра, а для определенных листов критерии фильтрации различны.
Sub DynamicFilter()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
SearchCol = "Typ"
SearchFor = "Anwendung"
Set rng1 = ActiveSheet.UsedRange.Find(SearchCol, , xlValues, xlWhole)
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=rng1.Column, Criteria1:=SearchFor
Next ws
End Sub
Все, что мне нужно, это то, как я могу определить несколько фильтров для нескольких листов. Фильтр 1 «Anwendung» для листа 1 и Filter 2: «Ressourcen» для листа 2 в качестве фильтра для другого листа и так далее.
Я действительно был бы признателен, если бы кто-нибудь из вас мог мне помочь.
РЕДАКТИРОВАТЬ - Решено. Чтобы записать макрос, выполните его и немного подкорректируйте. Наконец-то удалось решить проблему.
Sheets("Anwendungen").Select
ActiveWindow.SmallScroll ToRight:=15
ActiveSheet.Range("$A$1:$AZ$10637").AutoFilter Field:=35, Criteria1:= _
"Anwendung"
Sheets("Ressourcen").Select
ActiveWindow.SmallScroll ToRight:=16
ActiveSheet.Range("$A$1:$AZ$10637").AutoFilter Field:=35, Criteria1:=Array(_
"Gebäude", "IT-System", "Netz", "Raum"), Operator:=xlFilterValues
Где хранится «Anwendung»? это в определенной (* той же *) ячейке на каждом листе или в том, что имя рабочего листа? –
@ vba4all- Anwendung - это имя листа, а также хранится как Anwendungen, resourcen, Netz и т. Д. В столбце AI. И я пытаюсь фильтровать имя листа = Anwendung с фильтром в столбце AI = Anwendung и аналогично для ressourcen. – wildradical
@ vba4all- большое спасибо. Но он делает то же самое, что я описал ранее, когда я его использую для. Когда я использую SearchFor.range = ws.Range («AI1»), он фильтрует все строки во всей книге с помощью «Anwendung». Хотя у меня есть лист с именем «Ressourcen», а в столбце AI есть «Resourcen» в качестве значения ячейки. Мне действительно нужно 2 фильтра. Фильтр 1 = Anwendung, который я могу запустить на листе Anwendung. Фильтр 2 = Ressourcen, который я могу получить на листе ressourcen. – wildradical