Как автоматически обновлять фильтр в excel
Перейти к содержимому

Как автоматически обновлять фильтр в excel

Автоматическое обновление автофильтра в excel, обновление

Как автоматически обновлять автофильтр Excel при изменении данных?

вариант использования: я изменяю значение одной ячейки на значение, которое было отфильтровано. Я хочу, чтобы текущая строка исчезла без необходимости делать что-либо еще.

кажется, он не работает с более сложными случаями:

предположим, что у вас есть лист и таблица из 2 столбцов: col A: результат вычисления формулы, число; col B = имя; задача проста: создайте фильтр имен номеров adn на основе по числу критериев >0

Что вы делаете, использует автофильтр для этого, и он работает. Но не самовосстанавливающийся.

предложенные макросы как-то не хотят работать:

  • во-первых, я создаю автофильтр и применяю критерии (работы)
  • во-вторых, я изменяю содержимое соседних листов, что приводит к изменению acive sheet (col A)
  • макросы запускаются, но список не фильтруется: старые записи все еще есть, но с новыми числа (даже 0, когда я использую > 0 критериев).
    — Затем макросы отключают режим автоматического фильтра и кнопку, поэтому я теряю свой выбор и должен повторно выбрать вручную.

Как автоматически обновлять автоматический фильтр Excel при изменении данных?

Как автоматически обновлять автоматический фильтр Excel при изменении данных?

Случай использования: меняю значение одной ячейки на значение, которое было отфильтровано. Я хочу, чтобы текущая строка исчезла, не делая ничего другого.

6 ответов

Щелкните правой кнопкой мыши на имени вашего листа, выберите «Просмотреть код» и вставьте код ниже. После вставки нажмите значок Excel ниже «Файл» в левом верхнем углу или введите Alt-F11, чтобы вернуться к представлению электронной таблицы.

Это позволит автоматически обновить. Не забудьте сохранить файл в формате с поддержкой макроса lie .xlsm .

Обмен кодом с этим, похоже, тоже делает трюк (по крайней мере, в Excel 2010):

Я обнаружил, что когда я работал с таблицами, это не сработало. Фильтр не был на листе, а на столе. этот код сделал трюк

Я нашел информацию здесь: Ссылка

Я использую VBA / Macro на основе события Worksheet_Change , но мой подход немного отличается . Хорошо, сначала код, а затем объяснения:

(Используйте комбинацию клавиш Alt + F11 , чтобы создать панель разработки и вставьте код на рабочий лист, содержащий фильтр, который вы хотите получить автоматически обновленный.)

В моем примере я предполагаю иметь простой фильтр в одном столбце (L в моем случае) и что мой диапазон данных находится в строках от 1 (даже если он может содержать заголовок) до 126 (выберите номер отличный достаточно, чтобы быть уверенным). Операция проста: по мере того как что-то меняется на моем листе, фильтр в указанном диапазоне снова удаляется / повторно применяется, чтобы обновить его. Здесь нужно немного объяснения: Поле и Критерии .

Поле — целочисленное смещение диапазона. В моем случае у меня есть только один фильтр столбцов, и диапазон задается одним столбцом (L), который является первым в диапазоне (поэтому я использую 1 как значение).

Критерии — это строка, описывающая фильтр для применения к диапазону данных. В моем примере я хочу показать только строки, где столбцы L отличаются от 0 (следовательно, я использовал « danicotra 10.06.2017 в 12:08

Просто для консолидации ответов (ответов):

Щелкните правой кнопкой мыши на имени вашего листа, выберите «Просмотреть код» и вставьте код ниже. После вставки нажмите значок Excel ниже «Файл» в левом верхнем углу или введите Alt-F11, для возврата к представлению электронной таблицы.

Это позволит автоматически обновить. Не забудьте сохранить файл в формате с поддержкой макроса .xlsm.

И Крис использовал этот код (который я только что сделал в 2010 году):

Если вы не раскрываете сообщение, вы видите только длинный ответ! 😉

Извините, недостаточно комментариев для комментариев. (Admins, не стесняйтесь вырезать это в комментарии выше.) Пользовательский ответ «danicotra», начинающийся с «Я использую VBA / Macro на основе события Worksheet_Change, но мой подход . » с помощью ‘сначала удалите фильтр
‘затем примените его снова
является правильным решением при использовании Excel 2007+. Однако .AutoFilter.ApplyFilter недействителен в XL03 и ранее, поэтому я показываю путь ниже.

Я прошу, чтобы истинные эксперты и гуру прочитали код, потому что я уверен, что это материал верхней полки. Возможно, необъяснимое значение downvote на этом ответе может быть отменено, когда люди видят, что делает хороший материал ниже.

danicotra использовал упрощенный пример. На самом деле, вы можете сделать это в более общем плане. Предположим, что с ActiveSheet для следующего (или другого объекта листа):

Сохранить диапазон автофильтра. Он содержит столбцы .AutoFilter.Filters.Count и (.AutoFilter.Range.Count / .AutoFilter.Filters.Count), сохраненные в rngAutofilter

Соберите в массиве myAutofilters каждый из 4 свойств каждого из элементов автофильтра .AutoFilter.Filters.Count, заботясь о том, чтобы вы избегали «ошибок, определяемых приложением», когда OO или .Operator являются ложными. (myAutofilters будут reDim’d к количеству строк и столбцов на шаге 1)

Отключите фильтр, но сохраните выпадающие списки с помощью .ShowAllData

Для каждого элемента фильтра, который был. В соответствии с вашим сохраненным массивом, сбросьте 3 из 4 свойств каждого из элементов автофильтра .AutoFilter.Filters.Count. Опять позаботьтесь о том, чтобы вы избегали «ошибок, определяемых приложением», когда .Operator является ложным, поэтому для каждого элемента «i»,
rngAutofilter.AutoFilter Поле: = i, Критерии1: = myAutofilters (i, 2)
или
rngAutofilter.AutoFilter Поле: = i, Criteria1: = myAutofilters (i, 2), Operator: = myAutofilters (i, 3), Criteria2: = myAutofilters (i, 4)

Теперь автофильтр будет восстановлен в том же диапазоне, который был до начала вашего кода, но с обновленным автофильтром для изменения данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *