Как обновить фильтр в excel
Как автоматически обновить автофильтр Excel при изменении данных?
Вариант использования: я изменяю значение одной ячейки на значение, которое было отфильтровано. Я хочу, чтобы текущая строка исчезла без необходимости делать что-либо еще.
Я смог заставить его работать, когда я поместил этот код в событие Worksheet_Change () вместо события Worksheet_Calculate ().
Мне пришлось сделать еще одну модификацию, потому что Calculate ожидал параметр. Теперь это работает!
Обмен кода с этим, похоже, тоже помогает (по крайней мере, в Excel 2010):
Я обнаружил, что когда я работал с таблицами, это не сработало. Фильтр был не на листе, а на столе. этот код добился цели
Щелкните правой кнопкой мыши по имени вашего листа, выберите «Просмотр кода» и вставьте код ниже. После вставки щелкните значок Excel под «Файл» в левом верхнем углу или введите Alt-F11, чтобы вернуться к представлению электронной таблицы.
Это включит автообновление. Не забудьте сохранить файл в формате с поддержкой макросов lie .xlsm .
Я также использую VBA / Macro, основанный на Worksheet_Change событии, но мой подход немного отличается . Хорошо, сначала код, а затем объяснения:
(Используйте комбинацию клавиш Alt +, F11 чтобы появилась панель разработки, и вставьте код на лист, содержащий фильтр, который вы хотите автоматически обновить.)
В моем примере я предполагаю иметь простой фильтр для одного столбца (в моем случае L), и что мой диапазон данных находится в строках от 1 (даже если он может содержать заголовок) до 126 (выберите число, достаточно большое, чтобы конечно). Операция проста: когда что-то меняется на моем листе, фильтр в указанном диапазоне снова удаляется / повторно применяется, чтобы его обновить. Здесь нужно немного пояснений: поле и критерии .
Поле представляет собой целое смещение диапазона. В моем случае у меня только фильтр с одним столбцом, а диапазон создается одним столбцом (L), который является первым в диапазоне (поэтому я использую 1 в качестве значения).
Критерии является строкой , которая описывает фильтр для применения в диапазоне данных. В моем примере я хочу показать только те строки, где столбец L отличается от 0 (поэтому я использовал «<> 0»).
Просто чтобы закрепить ответ (ы):
Щелкните правой кнопкой мыши по имени вашего листа, выберите «Просмотр кода» и вставьте код ниже. После вставки щелкните значок Excel под «Файл» в левом верхнем углу или введите Alt-F11, чтобы вернуться к представлению электронной таблицы.
Это включит автообновление. Не забудьте сохранить файл в формате с поддержкой макросов lie .xlsm.
И Крис использовал этот код (который я только что сделал в 2010 году):
Извините, недостаточно комментариев для комментирования. (Администраторы, не стесняйтесь разрезать это на комментарий выше.) Пользовательский ответ "danicotra" начинается с "Я использую VBA / Macro, основанный также на событии Worksheet_Change, но мой подход . " с
"первым удаленным фильтром
", затем применяю его снова
является правильным решением при использовании Excel 2007+. Однако .AutoFilter.ApplyFilter недопустим в XL03 и более ранних версиях, поэтому я покажу путь ниже.
Я прошу настоящих экспертов и гуру прочесть код, потому что я уверен, что это материал высшего качества. Возможно, необъяснимый подсчет понижения в этом ответе может быть обращен вспять, когда люди увидят, что хорошо сделано ниже.
Даникотра использовал упрощенный пример. На самом деле, вы можете сделать это более широко. Предположим, с ActiveSheet для следующего (или некоторого другого объекта листа):
Сохранить диапазон автофильтра. Он содержит столбцы .AutoFilter.Filters.Count и строки (.AutoFilter.Range.Count / .AutoFilter.Filters.Count), сохраненные в rngAutofilter.
Соберите в массив myAutofilters каждое из 4 свойств каждого из элементов автофильтра .AutoFilter.Filters.Count, следя за тем, чтобы избежать ошибок, определяемых приложением, когда .On или .Operator имеет значение false. (myAutofilters будет reDim'd на количество строк и столбцов в шаге 1)
Отключите фильтр, но сохраните выпадающие списки с помощью .ShowAllData
Для каждого элемента фильтра, который был .On в соответствии с сохраненным массивом, сбросьте 3 из 4 свойств каждого из элементов автофильтра .AutoFilter.Filters.Count. Опять же, позаботьтесь о том, чтобы избежать ошибок, определенных приложением, когда .Operator имеет значение false, поэтому для каждого элемента «i»
поле rngAutofilter.AutoFilter: = i, Criteria1: = myAutofilters (i, 2)
или
поле rngAutofilter.AutoFilter: = i, Критерии1: = myAutofilters (i, 2), Оператор: = myAutofilters (i, 3), Критерии2: = myAutofilters (i, 4)
Теперь автофильтр будет восстановлен в том же диапазоне, в котором он находился до запуска вашего кода, но с обновленным автофильтром для изменений данных.
Зачем в МИРЕ кто-то отрицал бы этот полезный ответ, который даже включает в себя полный автономный код (и тщательно проверенный), и даже дает подробное объяснение кода? Я спрашиваю, серьезно. Люди хотят хорошую профессиональную помощь в суперпользователе, или я даже не беспокоюсь? Есть ли тролли, которые просто понижают голосование, чтобы относительно поддержать себя ??
По крайней мере, у вас есть комментарии, если вы не согласны, чтобы я мог использовать обратную связь, чтобы лучше служить сообществу. Админы, это предложение, которое я хотел бы сделать. У всех отрицательных отзывов требуется пояснительный комментарий. Я видел много явно замечательных постов, которые необъяснимо опровергали, что действительно кажется эпидемией для суперпользователя - и нигде больше.
После фильтрации или сортировки данных в диапазоне ячеек или столбце таблицы вы можете повторно использовать фильтр или выполнить сортировку, чтобы получить последние результаты, или очистить фильтр, чтобы снова отфильтровать все данные.
Примечание: При сортировке нельзя очистить порядок сортировки и восстановить порядок, который был раньше. Однако перед сортировкой можно добавить столбец, содержащий произвольные значения, чтобы сохранить исходный порядок сортировки, например номера с приращением. Затем можно отсортировать столбец, чтобы восстановить исходный порядок сортировки.
В этой статье
Подробнее о повторном повторном повторном фильтрации и сортировке
Чтобы определить, применяется ли фильтр, обратите внимание на значок в заголовке столбца:
Стрелка вниз означает, что фильтрация включена, но фильтр не применяется.
Совет: Если наведите курсор на заголовок столбца с включенной фильтрацией, но не примененной, на экране появляется подсказка "(Показывать все)".
Кнопка Фильтр означает, что фильтр применяется.
Совет: Когда вы наводите курсор на заголовок отфильтрованного столбца, на подсказке отображается описание примененного к этому столбцу фильтра, например "Равно красному цвету ячейки" или "Больше 150".
При повторном анализе фильтра или сортировки отображаются разные результаты по следующим причинам:
Данные были добавлены, изменены или удалены из диапазона ячеек или столбца таблицы.
Фильтр является динамическим фильтром даты и времени, таким как "Сегодня","Наэтой неделе" или "Год к дате".
значения, возвращаемые формулой, изменились, и лист был пересчитан.
Примечание: При использовании диалогового окна Найти для поиска отфильтрованных данных поиск ведется только по отображаемой информации. данные, которые не отображаются, не поиск не ведется. Чтобы найти все данные, очистка всех фильтров.
Повторное повторное фильтрация или сортировка
Примечание: При работе с таблицей условия фильтрации и сортировки сохраняются вместе с книгой, так что каждый раз при ее открытие можно повторно использовать фильтр и сортировать их. Однако для диапазона ячеек в книге сохраняются только условия фильтрации, а не условия сортировки. Если вы хотите сохранить условия сортировки для их повторного применения при открытии книги, рекомендуем вам использовать таблицу. Это особенно важно при сортировке по нескольким столбцам или сортировке, настройка которой занимает много времени.
Чтобы повторно отфильтровать или отсортировать фильтр, на вкладке Главная в группе Редактирование нажмите кнопку Сортировка & фильтри выберите повторно.
Очистка фильтра для столбца
Чтобы очистить фильтр для одного столбца в многостороном диапазоне ячеек или таблицы, нажмите кнопку Фильтр заголовке и выберите очистить фильтр из .
Примечание: Если фильтр в данный момент не применен, эта команда недоступна.
Очистка всех фильтров и повторная отрисовка всех строк
На вкладке Главная в группе Редактирование нажмите кнопку Сортировка & фильтри выберите очистить.
С помощью автофилеров или встроенных операторов сравнения, таких как "больше" и "10 лучших" в Excel вы можете показать нужные данные и скрыть остальные. После фильтрации данных в диапазоне ячеек или таблице вы можете повторно использовать фильтр, чтобы получить последние результаты, или очистить фильтр, чтобы повторно отфильтровать все данные.
Используйте фильтры, чтобы временно скрывать некоторые данные в таблице и видеть только те, которые вы хотите.
Фильтрация диапазона данных
Выберите любую ячейку в диапазоне данных.
Выберите Фильтр> данных.
Выберите стрелку в столбце .
Выберите Текстовые фильтры или Числовое фильтры, а затем выберите сравнение, например Между.
Введите условия фильтрации и нажмите кнопку ОК.
Фильтрация данных в таблице
При вводе данных в таблицу в заголовки ее столбцов автоматически добавляются элементы управления фильтрацией.
Выберите стрелку в столбца, который вы хотите отфильтровать.
Сберем (Выберите все) и выберем поля, которые вы хотите отобрать.
Стрелка загона столбца меняется на фильтра. Щелкните этот значок, чтобы изменить или очистить фильтр.
Статьи по теме
Отфильтрованные данные отображают только строки, которые соответствуют условия и скрывают строки, которые отображать не нужно. Фильтруя данные, вы можете копировать, находить, изменять, форматирование, диаграммы и печатать подмножество отфильтрованных данных, не меняя их оголовье и не перемещая.
Вы также можете отфильтровать несколько столбцов. Фильтры являются аддитивно, то есть каждый дополнительный фильтр основан на текущем фильтре и дополнительно уменьшает подмножество данных.
Примечание: При использовании диалогового окна Найти для поиска отфильтрованных данных поиск ведется только по отображаемой информации. данные, которые не отображаются, не поиск не ведется. Чтобы найти все данные, очистка всех фильтров.
Два типа фильтров
С помощью автофильтра можно создать два типа фильтров: по значению списка или по условиям. Каждый из этих типов фильтров является взаимоисключающими для каждого диапазона ячеек или таблицы столбцов. Например, можно отфильтровать значения по списку чисел или по критерию, но не по обоим критериям. можно фильтровать по значкам или по настраиваемой фильтрации, но не по обоим.
Повторное присвоение фильтра
Чтобы определить, применяется ли фильтр, обратите внимание на значок в заголовке столбца:
Стрелка вниз означает, что фильтрация включена, но не применена.
Если наведите курсор на заголовок столбца с включенной фильтрацией, но не примененной, на экране появляется подсказка "(Отображает все)".
Кнопка Фильтр означает, что применяется фильтр.
Когда вы наводите курсор на заголовок отфильтрованного столбца, на подсказке отображается примененный к этому столбец фильтр, например "Равно красному цвету ячейки" или "Больше 150".
При повторном его повторном анализе отображаются разные результаты по следующим причинам:
Данные были добавлены, изменены или удалены в диапазон ячеек или столбец таблицы.
значения, возвращаемые формулой, изменились, и лист был пересчитан.
Не смешивать типы данных
Для лучших результатов не смешивайте типы данных, такие как текст и число, число и дата в одном столбце, так как для каждого столбца доступна только одна команда фильтра. Если имеется сочетание типов данных, отображаемая команда является самым распространенным типом данных. Например, если столбец содержит три значения, сохраненные как число, и четыре значения как текст, отображается команда Текстовые фильтры.
Фильтрация данных в таблице
При вводе данных в таблицу в заголовки ее столбцов автоматически добавляются элементы управления фильтрацией.
Выделите данные, которые нужно отфильтровать. На вкладке Главная нажмите кнопку Форматировать как таблицу и выберите команду Форматировать как таблицу.
В диалоговом окне Создание таблицы можно выбрать, есть ли в таблице заглавные таблицы.
Выберите Таблица с заголовками, чтобы преобразовать верхнюю строку в заголовки таблицы. Данные в этой строке не будут фильтроваться.
Не выбирайте этот пункт, если вы хотите Excel в Интернете в таблицу под данными таблицы, которые можно переименовать.
Чтобы применить фильтр, щелкните стрелку в заголовке столбца и выберите параметр фильтрации.
Фильтрация диапазона данных
Если вы не хотите форматирование данных в виде таблицы, вы также можете применить фильтры к диапазону данных.
Выделите данные, которые нужно отфильтровать. Для лучшего результата столбцы должны иметь заголовки.
На вкладке Данные выберите фильтр.
Параметры фильтрации для таблиц или диапазонов
Можно применить общий фильтр, выбрав пункт Фильтр, или настраиваемый фильтр, зависящий от типа данных. Например, при фильтрации чисел отображается пункт Числовые фильтры, для дат отображается пункт Фильтры по дате, а для текста — Текстовые фильтры. Применяя общий фильтр, вы можете выбрать для отображения нужные данные из списка существующих, как показано на рисунке:
Выбрав параметр Числовые фильтры вы можете применить один из перечисленных ниже настраиваемых фильтров.
В этом примере, чтобы отобрать регионы, в которых сумма продаж за март была меньше 6000, можно применить настраиваемый фильтр:
Вот как это сделать.
Щелкните стрелку фильтра в ячейке со словом "Март", выберите пункт Числовые фильтры и условие Меньше и введите значение 6000.
Excel в Интернете применяет фильтр и отображает только регионы с продажами ниже 6000 рублей.
Аналогичным образом можно применить фильтры по дате и текстовые фильтры.
Очистка фильтра из столбца
Удаление всех фильтров из таблицы или диапазона
Выберите любую ячейку в таблице или диапазоне и на вкладке Данные нажмите кнопку Фильтр.
При этом фильтры будут удаляться из всех столбцов таблицы или диапазона и вывести все данные.
Щелкните ячейку в диапазоне или таблице, которую хотите отфильтровать.
На вкладке Данные щелкните Фильтр.
Щелкните стрелку в столбце с содержимым, которое вы хотите отфильтровать.
В разделе Фильтр щелкните Выберите один из вариантов и введите условия фильтра.
Фильтры можно применить только к одному диапазону ячеек на листе за раз.
Когда фильтр применяется к столбцу, в других столбцах в качестве фильтров можно использовать только значения, видимые в текущем отфильтрованном диапазоне.
В окне фильтра отображаются только первые 10 000 уникальных записей списка.
Щелкните ячейку в диапазоне или таблице, которую хотите отфильтровать.
На вкладке Данные щелкните Фильтр.
Щелкните стрелку в столбце с содержимым, которое вы хотите отфильтровать.
В разделе Фильтр щелкните Выберите один из вариантов и введите условия фильтра.
В поле рядом с всплывающим меню введите число, которое хотите использовать.
В зависимости от сделанного выбора вам может быть предложено выбрать дополнительные условия.
Фильтры можно применить только к одному диапазону ячеек на листе за раз.
Когда фильтр применяется к столбцу, в других столбцах в качестве фильтров можно использовать только значения, видимые в текущем отфильтрованном диапазоне.
В окне фильтра отображаются только первые 10 000 уникальных записей списка.
Вместо фильтрации можно использовать условное форматирование, которое позволяет четко выделить верхние или нижние числовые значения среди данных.
Данные можно быстро фильтровать на основании визуальных условий, таких как цвет шрифта, цвет ячейки или наборы значков. Можно также фильтровать ячейки по наличию в них формата, примененных стилей или условного форматирования.
В диапазоне ячеек или столбце таблицы щелкните ячейку с определенным цветом, цветом шрифта или значком, по которому вы хотите выполнить фильтрацию.
На вкладке Данные щелкните Фильтр.
Щелкните стрелку в столбце с содержимым, которое вы хотите отфильтровать.
В разделе Фильтр во всплывающем меню По цвету щелкните Цвет ячейки, Цвет шрифта или Значок ячейки и выберите цвет.
Это возможно только в случае, если фильтруемый столбец содержит пустую ячейку.
Щелкните ячейку в диапазоне или таблице, которую хотите отфильтровать.
На панели инструментов Данные щелкните Фильтр.
Щелкните стрелку в столбце с содержимым, которое вы хотите отфильтровать.
В области (Выделить все) прокрутите список вниз и установите флажок (Пустые).
Фильтры можно применить только к одному диапазону ячеек на листе за раз.
Когда фильтр применяется к столбцу, в других столбцах в качестве фильтров можно использовать только значения, видимые в текущем отфильтрованном диапазоне.
В окне фильтра отображаются только первые 10 000 уникальных записей списка.
Щелкните ячейку в диапазоне или таблице, которую хотите отфильтровать.
На вкладке Данные щелкните Фильтр.
Щелкните стрелку в столбце с содержимым, которое вы хотите отфильтровать.
В разделе Фильтр щелкните Выберите один из вариантов и во всплывающем меню выполните одно из указанных ниже действий.
Цель фильтрации диапазона
Строки с определенным текстом
Содержит или Равно.
Строки, не содержащие определенный текст
Не содержит или Не равно.
В поле рядом с всплывающим меню введите текст, которое хотите использовать.
В зависимости от сделанного выбора вам может быть предложено выбрать дополнительные условия.
Фильтрация столбца или выделенного фрагмента таблицы при истинности обоих условий
Фильтрация столбца или выделенного фрагмента таблицы при истинности одного из двух или обоих условий
Щелкните ячейку в диапазоне или таблице, которую хотите отфильтровать.
На панели инструментов Данные щелкните Фильтр.
Щелкните стрелку в столбце с содержимым, которое вы хотите отфильтровать.
В разделе Фильтр щелкните Выберите один из вариантов и во всплывающем меню выполните одно из указанных ниже действий.
Условие фильтрации
Начало строки текста
Начинается с.
Окончание строки текста
Заканчивается на.
Ячейки, которые содержат текст, но не начинаются с букв
Не начинаются с.
Ячейки, которые содержат текст, но не оканчиваются буквами
Не заканчиваются.
В поле рядом с всплывающим меню введите текст, которое хотите использовать.
В зависимости от сделанного выбора вам может быть предложено выбрать дополнительные условия.
Фильтрация столбца или выделенного фрагмента таблицы при истинности обоих условий
Фильтрация столбца или выделенного фрагмента таблицы при истинности одного из двух или обоих условий
При создании условий можно использовать подстановочные знаки.
Щелкните ячейку в диапазоне или таблице, которую хотите отфильтровать.
На панели инструментов Данные щелкните Фильтр.
Щелкните стрелку в столбце с содержимым, которое вы хотите отфильтровать.
В разделе Фильтр щелкните Выберите один из вариантов и выберите вариант.
В текстовом поле введите свои условия, используя подстановочные знаки.
Например, чтобы в результате фильтрации найти оба слова "год" и "гид", введите г?д.
Выполните одно из указанных ниже действий.
Используемый знак
Чтобы найти
Пример: условию "стро?а" соответствуют результаты "строфа" и "строка"
Любое количество символов
Пример: условию "*-восток" соответствуют результаты "северо-восток" и "юго-восток"
Вопросительный знак или звездочка
Например, там~? находит "там?"
Выполните одно из указанных ниже действий.
Удаление определенных условий фильтрации
Щелкните стрелку столбце, который содержит фильтр, и выберите очистить фильтр.
Удаление всех фильтров, примененных к диапазону или таблице
Выделите столбцы диапазона или таблицы, к которым применяются фильтры, а затем на вкладке Данные щелкните Фильтр.
Удаление или повторное применение стрелок фильтра в диапазоне или таблице
Выделите столбцы диапазона или таблицы, к которым применяются фильтры, а затем на вкладке Данные щелкните Фильтр.
При фильтрации данных появляются только данные, которые соответствуют вашим условиям. Данные, которые не соответствуют этому критерию, скрыты. После фильтрации данных можно копировать, находить, изменять, форматирование, диаграммы и печатать подмножество отфильтрованных данных.
Таблица с примененным фильтром "4 самых верхних элементов"
Фильтры забавляются. Это означает, что каждый дополнительный фильтр основан на текущем фильтре и дополнительно уменьшает подмножество данных. Сложные фильтры можно отфильтровать по одному значению, по одному формату или по одному критерию. Например, можно отфильтровать все числа больше 5, которые также ниже среднего. Но некоторые фильтры (десять верхних и нижних, выше и ниже среднего) основаны на исходном диапазоне ячеек. Например, при фильтрации десяти лучших значений вы увидите десять лучших значений всего списка, а не десять лучших значений подмножество последнего фильтра.
В Excel можно создавать фильтры трех типов: по значениям, по формату или по условиям. Но каждый из этих типов фильтров является взаимоисключающими. Например, можно отфильтровать значения по цвету ячейки или по списку чисел, но не по обоим. Вы можете фильтровать по значкам или по настраиваемой фильтрации, но не по обоим.
Фильтры скрывают лишние данные. Таким образом можно сосредоточиться на том, что вы хотите видеть. С другой стороны, при сортировке данных их порядок будет меняться. Дополнительные сведения о сортировке см. в списке сортировки данных.
При фильтрации рассмотрите следующие рекомендации:
В окне фильтра отображаются только первые 10 000 уникальных записей списка.
Можно отфильтровать несколько столбцов. Когда фильтр применяется к столбцу, в других столбцах в качестве фильтров можно использовать только значения, видимые в текущем отфильтрованном диапазоне.
Фильтры можно применить только к одному диапазону ячеек на листе за раз.
Примечание: При использовании поиска найти для поиска отфильтрованных данных поиск ведется только по отображаемой информации; данные, которые не отображаются, не поиск не ведется. Чтобы найти все данные, очистка всех фильтров.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Как автоматически обновить автофильтр Excel при изменении данных?
Вариант использования: я изменяю значение одной ячейки на значение, которое было отфильтровано. Я хочу, чтобы текущая строка исчезла без необходимости делать что-либо еще.
Обмен кода с этим, похоже, тоже помогает (по крайней мере, в Excel 2010):
Я обнаружил, что когда я работал с таблицами, это не сработало. Фильтр был не на листе, а на столе. этот код добился цели
Я также использую VBA/Macro на основе события Worksheet_Change , но мой подход немного отличается . Хорошо, сначала код, а затем объяснения:
(Используйте комбинацию клавиш Alt + F11, чтобы отобразить панель разработки, и вставьте код на лист, содержащий фильтр, который вы хотите автоматически обновить.)
В моем примере я предполагаю иметь простой фильтр для одного столбца (L в моем случае), и что мой диапазон данных находится в строках от 1 (даже если он может содержать заголовок) до 126 (выберите число, достаточно большое, чтобы конечно). Операция проста: когда что-то меняется на моем листе, фильтр в указанном диапазоне снова удаляется / повторно применяется, чтобы его обновить. Что нужно немного объяснить здесь, это поле и критерии.
Поле является целочисленным смещением диапазона. В моем случае у меня только фильтр с одним столбцом, а диапазон создается одним столбцом (L), который является первым в диапазоне (поэтому я использую 1 в качестве значения).
Критерии - это строка, описывающая фильтр, применяемый к диапазону данных. В моем примере я хочу показать только те строки, где столбец L отличается от 0 (поэтому я использовал «<> 0»).
Щелкните правой кнопкой мыши на имени вашего листа, выберите "Просмотр кода" и вставьте код ниже. После вставки щелкните значок Excel под "Файл" в левом верхнем углу или введите Alt-F11, чтобы вернуться к представлению электронной таблицы.
Это включит автообновление. Не забудьте сохранить файл в формате с поддержкой макросов lie .xlsm .
Просто чтобы закрепить ответ (ы):
Щелкните правой кнопкой мыши на имени вашего листа, выберите "Просмотр кода" и вставьте код ниже. После вставки щелкните значок Excel под "Файл" в левом верхнем углу или введите Alt-F11, чтобы вернуться к представлению электронной таблицы.
Это включит автообновление. Не забудьте сохранить файл в формате с поддержкой макросов lie .xlsm.
И Крис использовал этот код (который я только что сделал в 2010 году):
Извините, недостаточно комментариев для комментирования. (Администраторы, не стесняйтесь вырезать это в комментарии выше.) Ответ пользователя "danicotra", начинающийся с "Я использую VBA/Macro на основе события Worksheet_Change, но мой подход . " с
'сначала удалите фильтр
затем примените его снова
является правильным решением при использовании Excel 2007+. Тем не мение .Автофильтр.ApplyFilter недействителен в XL03 и ранее, поэтому я покажу путь ниже.
Я прошу настоящих экспертов и гуру прочесть код, потому что я уверен, что это материал высшего качества. Возможно, необъяснимый подсчет понижения в этом ответе может быть обращен вспять, когда люди увидят, что хорошо сделано ниже.
Даникотра использовал упрощенный пример. На самом деле, вы можете сделать это в более общем плане. Предположим, с ActiveSheet для следующего (или некоторого другого объекта листа):
Сохраните диапазон автофильтра. Она имеет .Автофильтр.Фильтры.Подсчитать столбцы и (.Автофильтр.Спектр.Граф /.Автофильтр.Фильтры.Количество) строк, сохраненных в rngAutofilter
Соберите в массив myAutofilters каждое из 4 свойств каждого из.Автофильтр.Фильтры.Подсчитайте элементы автофильтра, стараясь при этом избежать ошибок, определенных приложением.На или.Оператор ложный. (myAutofilters будет reDim'd на количество строк и столбцов в шаге 1)
Выключите фильтр, но сохраните раскрывающиеся списки с помощью.ShowAllData
Для каждого элемента фильтра, который был.В соответствии с сохраненным массивом сбросьте 3 из 4 свойств каждого из.Автофильтр.Фильтры.Подсчитать элементы автофильтра. Снова позаботьтесь о том, чтобы избежать «ошибок, определенных приложением», когда.Оператор ложный, поэтому для каждого элемента "я",
rngAutofilter.Поле автофильтра:= i, критерии1:= myAutofilters (i, 2)
или же
rngAutofilter.Поле автофильтра:= i, критерии1:= myAutofilters (i, 2), оператор:= myAutofilters (i, 3), критерии2:= myAutofilters (i, 4)
Теперь автофильтр будет восстановлен в том же диапазоне, в котором он находился до начала работы вашего кода, но с обновленным автофильтром для изменений данных.
Как автоматически обновить отфильтрованные данные в Excel
Microsoft Excel позволяет фильтровать данные. Это полезная функция, которая может помочь вам разобраться с большими объемами данных. Если вам не хватает технических ноу-хау, необходимых для создания базы данных, эта функция спасет вас.
Фильтры довольно просты и позволяют вам включать или исключать данные из столбца. Фильтр распространяется и на значения данных в соответствующих строках. Фильтр не выполняет автоматическое обновление.
Если значение в фильтрованном столбце изменяется, либо потому, что вы обновили его вручную, либо используется формула, вам придется применить фильтры снова. Простой фрагмент кода позволяет обновлять отфильтрованные столбцы на лету.
Вам нужно будет включить макросы и сохранить файл Excel как файл с поддержкой макросов .XLSM, чтобы использовать код. Чтобы сохранить файл как файл с поддержкой макросов, перейдите в меню «Файл»> «Сохранить как» и выберите книгу «Макросы с поддержкой макросов Excel» в диалоговом окне «Сохранить как».
Затем выберите лист, к которому вы применили фильтры. Щелкните его правой кнопкой мыши и выберите «Просмотреть код» в контекстном меню.
Откроется окно Microsoft Visual Basic с текущим листом Excel. Вставьте следующий код в окно кода.
Private Sub Worksheet_Change (ByVal Target As Range) Если Me.FilterMode = True, то с приложением .EnableEvents = False .ScreenUpdating = False заканчивается с ActiveWorkbook .CustomViews. Добавить ViewName: = ‘Mine’, RowColSettings: = True Me.AutoFilterMode = False .CustomViews (‘Mine’). Показать .CustomViews (‘Mine’). Удалить конец с приложением .EnableEvents = True .ScreenUpdating = True Закончить с End Если End Sub
Сохраните файл. Если вы не сохранили файл как книгу Excel с поддержкой макросов, вам будет предложено сделать это снова. Этот файл, который вы сохраните, будет сохранен в копии и не будет перезаписывать текущий файл.
После добавления кода вы можете обновить любую ячейку в отфильтрованном столбце, и она автоматически обновит отфильтрованные данные в соответствии с условия, которые вы установили. Этот код был написан пользователем Stack Exchange Сорином.
Читайте также: