Добрый день! Уважаемые коллеги, прочив тему http://www.planetaexcel.ru/techniques/2/197/по использованию расширенного фильтра с помощью макроса, я попробовал применть этот способ в моей задаче. (макрос уже прописа в исходном коде листа)
В моем тестовом примере наведен простой способ фильтрации - фильтруем Поля1,2,3,4 в соответствии с теми значениями, которые находятся в диапазоне критериев A2 2.
Далее у меня возникают вопросы:
1. Проставив значение 1 в поле А2, исходная таблица фильтруется не в полном объеме, оставляя лишние строки (начиная с 10) 2. Самое важное - для моей задачи необходимо применять не наложенный фильтр (по принципу лесенки),а комбинированный. У меня будет использоваться в дипазоне критериев только значения 1. Например, если проставить 1 в Поле1, Поле3, Поле4, должны отображаться только строки 5,7,9,10, 13, так как они содержат еденицы Поля1, Поля3, Поля4 (или еще пример, если проставить 1 в Поле3, Поле4, в исходной таблице должны быть показаны только 9,10, 13 строка.
Подскажите, пожалуйста, можно ли это реализовать с помощью макроса? Спасибо!
Добрый день! Уважаемые коллеги, прочив тему http://www.planetaexcel.ru/techniques/2/197/по использованию расширенного фильтра с помощью макроса, я попробовал применть этот способ в моей задаче. (макрос уже прописа в исходном коде листа)
В моем тестовом примере наведен простой способ фильтрации - фильтруем Поля1,2,3,4 в соответствии с теми значениями, которые находятся в диапазоне критериев A2 2.
Далее у меня возникают вопросы:
1. Проставив значение 1 в поле А2, исходная таблица фильтруется не в полном объеме, оставляя лишние строки (начиная с 10) 2. Самое важное - для моей задачи необходимо применять не наложенный фильтр (по принципу лесенки),а комбинированный. У меня будет использоваться в дипазоне критериев только значения 1. Например, если проставить 1 в Поле1, Поле3, Поле4, должны отображаться только строки 5,7,9,10, 13, так как они содержат еденицы Поля1, Поля3, Поля4 (или еще пример, если проставить 1 в Поле3, Поле4, в исходной таблице должны быть показаны только 9,10, 13 строка.
Подскажите, пожалуйста, можно ли это реализовать с помощью макроса? Спасибо!andruha912009
Здравствуйте. 1) в исходной таблице не должно быть полностью пустых строк. У Вас в примере строка 12 была пустой 2) чтобы критерии соединялись через логическое ИЛИ, надо их записывать в разных строках
Здравствуйте. 1) в исходной таблице не должно быть полностью пустых строк. У Вас в примере строка 12 была пустой 2) чтобы критерии соединялись через логическое ИЛИ, надо их записывать в разных строкахPelena
Спасибо большое. На вашем примере, когда я 1 стоит только в Поле2 (В ячейке B3) - отображается вся таблица, а мне нужны только 12 и 15 строка, так как только в них содержаться 1 Поля2.
с ув., Андрей
Спасибо большое. На вашем примере, когда я 1 стоит только в Поле2 (В ячейке B3) - отображается вся таблица, а мне нужны только 12 и 15 строка, так как только в них содержаться 1 Поля2.
работает. а как отфильтровать 2 и 4 поле по тем строкам, где есть 1? (должны быть 12, 13, 16 строка) Суть задачи,чтобы инструмент был универсальным.(в дальнейшем я в чекбоксах буду выбирать, какие поля должны входить список проверяемых на наличие единиц)
работает. а как отфильтровать 2 и 4 поле по тем строкам, где есть 1? (должны быть 12, 13, 16 строка) Суть задачи,чтобы инструмент был универсальным.(в дальнейшем я в чекбоксах буду выбирать, какие поля должны входить список проверяемых на наличие единиц)andruha912009
Pelena, Во вложении обновленный пример. Суть задачи: Если выбраны чекбоксы Поле2 и Поле4, исходная таблица должна фильтроваться по строкам, которые содержат единицы в 2 и 4 поле (операция ИЛИ) Если выбраны чекбоксы Поле1 и Поле3 - должны отображаться 12, 14, 16 строки. Макрос должен учитывать любую комбинацию выбранных чекбоксов.
Большое спасибо за помощь.
Pelena, Во вложении обновленный пример. Суть задачи: Если выбраны чекбоксы Поле2 и Поле4, исходная таблица должна фильтроваться по строкам, которые содержат единицы в 2 и 4 поле (операция ИЛИ) Если выбраны чекбоксы Поле1 и Поле3 - должны отображаться 12, 14, 16 строки. Макрос должен учитывать любую комбинацию выбранных чекбоксов.
Private Sub Worksheet_Calculate() Dim rng As Range Application.ScreenUpdating = False Range("A6").CurrentRegion.EntireRow.Hidden = False If Not (Cells(1, 1) Or Cells(1, 2) Or Cells(1, 3) Or Cells(1, 4)) Then Exit Sub For i = Range("A6").CurrentRegion.Row + 1 To Range("A6").CurrentRegion.Row + Range("A6").CurrentRegion.Rows.Count - 1 f = False For j = 1 To 4 f = f Or Cells(1, j) And Cells(i, j) = 1 Next j If Not f Then If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i)) Next i If Not rng Is Nothing Then rng.EntireRow.Hidden = True Application.ScreenUpdating = True End Sub
[/vba]
Посмотрите такой вариант [vba]
Код
Private Sub Worksheet_Calculate() Dim rng As Range Application.ScreenUpdating = False Range("A6").CurrentRegion.EntireRow.Hidden = False If Not (Cells(1, 1) Or Cells(1, 2) Or Cells(1, 3) Or Cells(1, 4)) Then Exit Sub For i = Range("A6").CurrentRegion.Row + 1 To Range("A6").CurrentRegion.Row + Range("A6").CurrentRegion.Rows.Count - 1 f = False For j = 1 To 4 f = f Or Cells(1, j) And Cells(i, j) = 1 Next j If Not f Then If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i)) Next i If Not rng Is Nothing Then rng.EntireRow.Hidden = True Application.ScreenUpdating = True End Sub
Каждый флажок связан со своей ячейкой. Увидеть можно, кликнув правой кнопкой мыши по флажку -- Формат объекта -- Связь с ячейкой. А в оранжевых ячейках просто формулы, ссылающиеся на эти ячейки, чтобы возникало событие пересчёта, на которое повешен макрос
Каждый флажок связан со своей ячейкой. Увидеть можно, кликнув правой кнопкой мыши по флажку -- Формат объекта -- Связь с ячейкой. А в оранжевых ячейках просто формулы, ссылающиеся на эти ячейки, чтобы возникало событие пересчёта, на которое повешен макросPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Pelena, Да, спасибо! Я просто смотрю в свойствах назначения макроса к флажкам, и там числятся Флажок1_Щелчок, Флажок2_Щелчок и т.д, которых нигде не могу найти.
Pelena, Да, спасибо! Я просто смотрю в свойствах назначения макроса к флажкам, и там числятся Флажок1_Щелчок, Флажок2_Щелчок и т.д, которых нигде не могу найти.andruha912009
Pelena, Сейчас пытаюсь разобраться, как поведет себя этот макрос, если у меня будут использоваться дополнительные ручные фильтры. В конце я добавил еще одно поле Месяц. Есть две проблемы, которые мешают мне применить этот макрос к основной таблицы 1. Например, если кликаю по 4 флажку и после этого выбираю какое-то значение в фильтре Месяца, отбор сбивается. 2. Наоборот, выбираю значение в поле Месяц (201502), затем фильтрую, например, по 4 флажку -> работает, но когда я снимаю 4 флажок, те строки, которые относятся к Месяцу 201502 - обратно не отображаются.
Так же я разбирался с вашим макросом, где указывается условие его работы, когда ни одни из флажков не выбран - происходит выход из функции. Возможно, для исправления 2 пункта можно использовать другое действие - например отобразить принудительно все строки с учетом ручного выбраного фильтра. Спасибо.
Pelena, Сейчас пытаюсь разобраться, как поведет себя этот макрос, если у меня будут использоваться дополнительные ручные фильтры. В конце я добавил еще одно поле Месяц. Есть две проблемы, которые мешают мне применить этот макрос к основной таблицы 1. Например, если кликаю по 4 флажку и после этого выбираю какое-то значение в фильтре Месяца, отбор сбивается. 2. Наоборот, выбираю значение в поле Месяц (201502), затем фильтрую, например, по 4 флажку -> работает, но когда я снимаю 4 флажок, те строки, которые относятся к Месяцу 201502 - обратно не отображаются.
Так же я разбирался с вашим макросом, где указывается условие его работы, когда ни одни из флажков не выбран - происходит выход из функции. Возможно, для исправления 2 пункта можно использовать другое действие - например отобразить принудительно все строки с учетом ручного выбраного фильтра. Спасибо.andruha912009
andruha912009, что мешало Вам сразу озвучить все условия? Больше переделывать не буду. Вариант с доп. столбцом (столбец А скрыт) и обычным фильтром
andruha912009, что мешало Вам сразу озвучить все условия? Больше переделывать не буду. Вариант с доп. столбцом (столбец А скрыт) и обычным фильтромPelena
Pelena, Спасибо! В этом варианте макроса вручную прописаны значения в колонке с месяцем? То есть, если вместо 201501 был бы другой текст, макрос бы не срабатывал?
Спасибо.
Pelena, Спасибо! В этом варианте макроса вручную прописаны значения в колонке с месяцем? То есть, если вместо 201501 был бы другой текст, макрос бы не срабатывал?
Pelena, могли бы вы описать принцип работы вашего макроса? Я уже несколько раз пробовал изменить значения в дополнительных фильтрах, он не работает Подскажите, пожалуйста, можно ли довать другие дополнительные поля в качестве ручных фильтров? Сориентируйте, пожалуйста, что нужно изменить, дальше я пойду сам. Заранее благодарен.
Pelena, могли бы вы описать принцип работы вашего макроса? Я уже несколько раз пробовал изменить значения в дополнительных фильтрах, он не работает Подскажите, пожалуйста, можно ли довать другие дополнительные поля в качестве ручных фильтров? Сориентируйте, пожалуйста, что нужно изменить, дальше я пойду сам. Заранее благодарен.andruha912009
За фильтрацию полей с флажками отвечает доп. столбец А с формулой
Код
=ИЛИ($B$4:$E$4*($B7:$E7=1))
Если хотя бы один флажок поставлен, фильтруется по этому столбцу с критерием ИСТИНА. Если ни одного флажка нет, то фильтр с этого столбца сбрасывается. Все остальные дополнительные поля с фильтрами работают как обычно. Макрос их не затрагивает.
Что значит "не работает"? Напоминаю, что в таблице не должно быть сквозных пустых строкНе актуально
За фильтрацию полей с флажками отвечает доп. столбец А с формулой
Код
=ИЛИ($B$4:$E$4*($B7:$E7=1))
Если хотя бы один флажок поставлен, фильтруется по этому столбцу с критерием ИСТИНА. Если ни одного флажка нет, то фильтр с этого столбца сбрасывается. Все остальные дополнительные поля с фильтрами работают как обычно. Макрос их не затрагивает.
Что значит "не работает"? Напоминаю, что в таблице не должно быть сквозных пустых строкНе актуальноPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Pelena, я изменил ваш макрос (адреса проверяемых ячеек), а так же добавил несколько фильтров. При вызове одного \ нескольких флажков таблица полностью скрывается
Pelena, я изменил ваш макрос (адреса проверяемых ячеек), а так же добавил несколько фильтров. При вызове одного \ нескольких флажков таблица полностью скрывается andruha912009
Если Вы перенесли столбец Критерии с 1 на 9 место, то в макросе тоже надо было изменить. И фильтр должен быть включен на всей таблице или хотя бы на столбце Критерии
Если Вы перенесли столбец Критерии с 1 на 9 место, то в макросе тоже надо было изменить. И фильтр должен быть включен на всей таблице или хотя бы на столбце КритерииPelena