Уважаемые эксперты Excel! Необходима Ваша помощь в написании макроса, который бы позволял накладывать фильтр по критерию на отфильтрованные данные по другим критериям. Есть база данных с множеством критериев, которые приведены в БД. Фильтрация БД ведется из таблицы с 4-мя параметрами, которые выбираются посредством выпадающего списка (таблица "Поиск по параметрам") Под каждый критерий прописан макрос с фильтром и элементом управления. При фильтрации данных по какому либо из критериев БД фильтруется заново.
Прошу Вашей помощи в написании макроса, который бы позволил фильтровать данные с учетом всех 4-х фильтров, приведенных в таблице "Поиск по параметрам", т. е. выбран 1-й параметр - фильтр, выбран 2-й параметр - фильтрация с учетом предыдущего фильтра, выбран 3-й параметр - фильтрация с учетом предыдущих двух фильтров и т.д.
Уважаемые эксперты Excel! Необходима Ваша помощь в написании макроса, который бы позволял накладывать фильтр по критерию на отфильтрованные данные по другим критериям. Есть база данных с множеством критериев, которые приведены в БД. Фильтрация БД ведется из таблицы с 4-мя параметрами, которые выбираются посредством выпадающего списка (таблица "Поиск по параметрам") Под каждый критерий прописан макрос с фильтром и элементом управления. При фильтрации данных по какому либо из критериев БД фильтруется заново.
Прошу Вашей помощи в написании макроса, который бы позволил фильтровать данные с учетом всех 4-х фильтров, приведенных в таблице "Поиск по параметрам", т. е. выбран 1-й параметр - фильтр, выбран 2-й параметр - фильтрация с учетом предыдущего фильтра, выбран 3-й параметр - фильтрация с учетом предыдущих двух фильтров и т.д.ReeZon
Дело в том, что я хочу полностью автоматизировать отбор данных и вывести элементы управления в верхнюю левую таблицу. Поэтому так усложнил себе задачу) Все фильтры работают по отдельности, но вместе я заставить их работать никак не могу) Прошу помощи!!!
Дело в том, что я хочу полностью автоматизировать отбор данных и вывести элементы управления в верхнюю левую таблицу. Поэтому так усложнил себе задачу) Все фильтры работают по отдельности, но вместе я заставить их работать никак не могу) Прошу помощи!!!ReeZon
На сколько я понимаю, что данный код работает на все 4 фильтра одновременно? А сделать так, чтобы постепенно вводить фильтрацию в БД как то можно?
На сколько я понимаю, что данный код работает на все 4 фильтра одновременно? А сделать так, чтобы постепенно вводить фильтрацию в БД как то можно?ReeZon
С кодом разобрался - спасибо огромное!!! Но получается, что допустим если я хочу отфильтровать БД только по 3-му критерию и 1-му, то нужно прописывать отдельный элемент управления - т. е. фильтр на фильтр не накладывается, а просто БД фильтруется заново и зависит от последовательности действий. Получается чтобы учесть все возможные варианты фильтрации - нужно прописать 16 команд и дать им элементы управления...
Можно ли как то проще накладывать каждый новый фильтр на предыдущий фильтр? Без зависимости последовательности действий пользователя. Т. е. задан 1-й критерий - фильтр, затем задан 3-й критерий - фильтр данных, уже отфильтрованных по 1-му критерию и т. д.?
С кодом разобрался - спасибо огромное!!! Но получается, что допустим если я хочу отфильтровать БД только по 3-му критерию и 1-му, то нужно прописывать отдельный элемент управления - т. е. фильтр на фильтр не накладывается, а просто БД фильтруется заново и зависит от последовательности действий. Получается чтобы учесть все возможные варианты фильтрации - нужно прописать 16 команд и дать им элементы управления...
Можно ли как то проще накладывать каждый новый фильтр на предыдущий фильтр? Без зависимости последовательности действий пользователя. Т. е. задан 1-й критерий - фильтр, затем задан 3-й критерий - фильтр данных, уже отфильтрованных по 1-му критерию и т. д.?ReeZon
Тогда используйте коллекции. Sub() Цикл Применение первого фильтра ко всем значениям, Коллекция1 = строки1 Если выбрано "Сбросить фильтр", тогда понятно Если нет, то Применение второго фильтра к элементам Коллекции1 = строки2 (которые являются частью строки1) и т.д. Конец цикла End Sub() Как-то так наверное
Тогда используйте коллекции. Sub() Цикл Применение первого фильтра ко всем значениям, Коллекция1 = строки1 Если выбрано "Сбросить фильтр", тогда понятно Если нет, то Применение второго фильтра к элементам Коллекции1 = строки2 (которые являются частью строки1) и т.д. Конец цикла End Sub() Как-то так наверноеМурад
Сообщение отредактировал Мурад - Среда, 09.04.2014, 11:03
Уважаемый Boroda! По данному коду все равно идет отображение данных по нескольким фильтрам одновременно, а именно H8 и H11. Может есть еще варианты?
Уважаемый Boroda! По данному коду все равно идет отображение данных по нескольким фильтрам одновременно, а именно H8 и H11. Может есть еще варианты?ReeZon
По данному коду все равно идет отображение данных по нескольким фильтрам одновременно, а именно H8 и H11
Ну конечно. Это же не готовый код для Вашей кнопки, а информация к размышлению Вам. Самостоятельно подумать - не, никак, да? Хорошо, подробнее: на каждое условие в ячейках Н8:Н11 есть кнопка, в которой прописано для Н8 [vba]
Код
Sub tt() 'работа с фильтром Н8 ActiveSheet.Range("$A$15:$k$41").AutoFilter Field:=7, Criteria1:="*" & Range("H8") & "*" End Sub
[/vba] и рядом кнопка [vba]
Код
Sub qq() ActiveSheet.Range("$A$15:$K$41").AutoFilter Field:=7 End Sub
[/vba] снятия фильтра по ЭТОМУ столбцу (эти 2 кода можно объединить и повесить на одну кнопку. Потренируйтесь самостоятельно, если желание появится) Так для каждой ячейки из Н8:Н11 Ниже кнопка снятия всех фильтров (а не удаления, как у Вас) [vba]
Код
Sub nnn() 'установка фильтра в состояние "Нет фильтрации" ActiveSheet.ShowAllData End Sub
По данному коду все равно идет отображение данных по нескольким фильтрам одновременно, а именно H8 и H11
Ну конечно. Это же не готовый код для Вашей кнопки, а информация к размышлению Вам. Самостоятельно подумать - не, никак, да? Хорошо, подробнее: на каждое условие в ячейках Н8:Н11 есть кнопка, в которой прописано для Н8 [vba]
Код
Sub tt() 'работа с фильтром Н8 ActiveSheet.Range("$A$15:$k$41").AutoFilter Field:=7, Criteria1:="*" & Range("H8") & "*" End Sub
[/vba] и рядом кнопка [vba]
Код
Sub qq() ActiveSheet.Range("$A$15:$K$41").AutoFilter Field:=7 End Sub
[/vba] снятия фильтра по ЭТОМУ столбцу (эти 2 кода можно объединить и повесить на одну кнопку. Потренируйтесь самостоятельно, если желание появится) Так для каждой ячейки из Н8:Н11 Ниже кнопка снятия всех фильтров (а не удаления, как у Вас) [vba]
Код
Sub nnn() 'установка фильтра в состояние "Нет фильтрации" ActiveSheet.ShowAllData End Sub