Расширенный фильтр в EXCEL

history

Главный недостаток стандартного фильтра ( Данные/ Сортировка и фильтр/ Фильтр ) – это отсутствие визуальной информации о примененном в данный момент фильтре: необходимо каждый раз лезть в меню фильтра, чтобы вспомнить критерии отбора записей. Особенно это неудобно, когда применено несколько критериев. Расширенный фильтр лишен этого недостатка – все критерии помещаются в виде отдельной таблички над фильтруемыми записями.


Алгоритм создания Расширенного фильтра прост:

  • Создаем таблицу, к которой будет применяться фильтр (исходная таблица);
  • Создаем табличку с критериями (с условиями отбора);
  • Запускаем Расширенный фильтр .

Пусть в диапазоне A 7:С 83 имеется исходная таблица с перечнем товаров, содержащая поля (столбцы) Товар , Количество и Цена (см. файл примера ). Таблица не должна содержать пустых строк и столбцов, иначе Расширенный фильтр (да и обычный Автофильтр ) не будет правильно работать.

Задача 1 (начинается...)

Настроим фильтр для отбора строк, которые содержат в наименовании Товара значения начинающиеся со слова Гвозди . Этому условию отбора удовлетворяют строки с товарами гвозди 20 мм , Гвозди 10 мм , Гвозди 10 мм и Гвозди .

Табличку с условием отбора разместим разместим в диапазоне А 1 :А2 . Табличка должна содержать также название заголовка столбца, по которому будет производиться отбор. В качестве критерия в ячейке А2 укажем слово Гвозди .

Примечание : Структура критериев у Расширенного фильтра четко определена и она совпадает со структурой критериев для функций БДСУММ() , БСЧЁТ() и др.

Обычно критерии Расширенного фильтра размещают над таблицей, к которой применяют фильтр, но можно их разместить и сбоку таблицы. Избегайте размещения таблички с критериями под исходной таблицей, хотя это не запрещено, но не всегда удобно, т.к. в исходную таблицу могут добавляться новые строки.

ВНИМАНИЕ! Убедитесь, что между табличкой со значениями условий отбора и исходной таблицей имеется, по крайней мере, одна пустая строка (это облегчит работу с Расширенным фильтром ).

Теперь все подготовлено для работы с Расширенным фильтром:

  • выделите любую ячейку таблицы (это не обязательно, но позволит ускорить заполнение параметров фильтра);
  • вызовите Расширенный фильтр ( Данные/ Сортировка и фильтр/ Дополнительно );
  • в поле Исходный диапазон убедитесь, что указан диапазон ячеек таблицы вместе с заголовками ( A 7:С 83 );
  • в поле Диапазон условий укажите ячейки содержащие табличку с критерием, т.е. диапазон А 1 :А2 .

При желании можно отобранные строки скопировать в другую таблицу, установив переключатель в позицию Скопировать результат в другое место . Но мы это здесь делать не будем.

Нажмите кнопку ОК и фильтр будет применен - в таблице останутся только строки содержащие в столбце Товар наименования гвозди 20 мм , Гвозди 10 мм , Гвозди 50 мм и Гвозди . Остальные строки будут скрыты.

Номера отобранных строк будут выделены синим шрифтом.

Чтобы отменить действие фильтра выделите любую ячейку таблицы и нажмите CTRL+SHIFT+L (к заголовку будет применен Автофильтр , а действие Расширенного фильтра будет отменено) или нажмите кнопку меню Очистить ( Данные/ Сортировка и фильтр/ Очистить ).

Задача 2 (точно совпадает)



Настроим фильтр для отбора строк, у которых в столбце Товар точно содержится слово Гвозди . Этому условию отбора удовлетворяют строки только с товарами гвозди и Гвозди ( Регистр не учитывается). Значения гвозди 20 мм , Гвозди 10 мм , Гвозди 50 мм учтены не будут.

Табличку с условием отбора разместим разместим в диапазоне B1:В2 . Табличка должна содержать также название заголовка столбца, по которому будет производиться отбор. В качестве критерия в ячейке B2 укажем формулу ="= Гвозди" .

Теперь все подготовлено для работы с Расширенным фильтром:

  • выделите любую ячейку таблицы (это не обязательно, но позволит ускорить заполнение параметров фильтра);
  • вызовите Расширенный фильтр ( Данные/ Сортировка и фильтр/ Дополнительно );
  • в поле Исходный диапазон убедитесь, что указан диапазон ячеек таблицы вместе с заголовками ( A 7:С 83 );
  • в поле Диапазон условий укажите ячейки содержащие табличку с критерием, т.е. диапазон B1 :B2 .
  • Нажмите ОК

Применять Расширенный фильтр с такими простыми критериями особого смысла нет, т.к. с этими задачами легко справляется Автофильтр . Рассмотрим более сложные задачи по фильтрации.

Если в качестве критерия указать не ="=Гвозди" , а просто Гвозди , то, будут выведены все записи содержащие наименования начинающиеся со слова Гвозди ( Гвозди 80мм , Гвозди2 ). Чтобы вывести строки с товаром, содержащие на слово гвозди , например, Новые гвозди , необходимо в качестве критерия указать ="=*Гвозди" или просто * Гвозди, где * является подстановочным знаком и означает любую последовательность символов.

Задача 3 (условие ИЛИ для одного столбца)

Настроим фильтр для отбора строк, у которых в столбце Товар содержится значение начинающееся со слова Гвозди ИЛИ Обои .

Критерии отбора в этом случае должны размещаться под соответствующим заголовком столбца ( Товар ) и должны располагаться друг под другом в одном столбце (см. рисунок ниже). Табличку с критериями размести в диапазоне С1:С3 .

Окно с параметрами Расширенного фильтра и таблица с отфильтрованными данными будет выглядеть так.

После нажатия ОК будут выведены все записи, содержащие в столбце Товар продукцию Гвозди ИЛИ Обои .

Задача 4 (условие И)

Произведем отбор только тех строк таблицы, которые точно содержат в столбце Товар продукцию Гвозди , а в столбце Количество значение >40. Критерии отбора в этом случае должны размещаться под соответствующими заголовками (Товар и Количество) и должны располагаться на одной строке . Условия отбора должны быть записаны в специальном формате: ="= Гвозди" и =">40" . Табличку с условием отбора разместим разместим в диапазоне E1:F2 .

После нажатия кнопки ОК будут выведены все записи содержащие в столбце Товар продукцию Гвозди с количеством >40.

СОВЕТ: При изменении критериев отбора лучше каждый раз создавать табличку с критериями и после вызова фильтра лишь менять ссылку на них.

Примечание : Если пришлось очистить параметры Расширенного фильтра ( Данные/ Сортировка и фильтр/ Очистить ), то перед вызовом фильтра выделите любую ячейку таблицы – EXCEL автоматически вставит ссылку на диапазон занимаемый таблицей (при наличии пустых строк в таблице вставится ссылка не на всю таблицу, а лишь до первой пустой строки).

Задача 5 (условие ИЛИ для разных столбцов)

Предыдущие задачи можно было при желании решить обычным автофильтром . Эту же задачу обычным фильтром не решить.

Произведем отбор только тех строк таблицы, которые точно содержат в столбце Товар продукцию Гвозди , ИЛИ которые в столбце Количество содержат значение >40. Критерии отбора в этом случае должны размещаться под соответствующими заголовками (Товар и Количество) и должны располагаться на разных строках . Условия отбора должны быть записаны в специальном формате: =">40" и ="= Гвозди" . Табличку с условием отбора разместим разместим в диапазоне E4:F6 .

После нажатия кнопки ОК будут выведены записи содержащие в столбце Товар продукцию Гвозди ИЛИ значение  >40 (у любого товара).

Задача 6 (Условия отбора, созданные в результате применения формулы)

Настоящая мощь Расширенного фильтра проявляется при использовании в качестве условий отбора формул.

Существует две возможности задания условий отбора строк:

  • непосредственно вводить значения для критерия (см. задачи выше);
  • сформировать критерий на основе результатов выполнения формулы.

Рассмотрим критерии задаваемые формулой. Формула, указанная в качестве критерия отбора, должна возвращать результат ИСТИНА или ЛОЖЬ.

Например, отобразим строки, содержащие Товар, который встречается в таблице только 1 раз. Для этого:

  • введем в ячейку H2 формулу =СЧЁТЕСЛИ(Лист1!$A$8:$A$83;A8)=1
  • в Н1 вместо заголовка введем поясняющий текст, например, Неповторяющиеся значения . Поясняющий текст НЕ должен совпадать ни с одним заголовком столбца таблицы! В противном случае фильтр будет работать неправильно.

Применим Расширенный фильтр , указав в качестве диапазона условий ячейки Н1:Н2 .

Обратите внимание на то, что диапазон поиска значений введен с использованием абсолютных ссылок , а критерий в функции СЧЁТЕСЛИ() – с относительной ссылкой. Это необходимо, поскольку при применении Расширенного фильтра EXCEL увидит, что А8 — это относительная ссылка и будет перемещаться вниз по столбцу Товар по одной записи за раз и возвращать значение либо ИСТИНА, либо ЛОЖЬ. Если будет возвращено значение ИСТИНА, то соответствующая строка таблицы будет отображена. Если возвращено значение ЛОЖЬ, то строка после применения фильтра отображена не будет.

СОВЕТ: Для проверки работоспособности формулы можно создать дополнительный столбец рядом с таблицей (например в F) и ввести указанную выше формулу в ячейку F8, а затем скопировать ее вниз. Будет сформирован столбец со значениями ИСТИНА/ЛОЖЬ, который поможет определить как работает ваша формула.

Примеры других формул из файла примера :

  • Вывод строк с ценами больше, чем 3-я по величине цена в таблице. =C8>НАИБОЛЬШИЙ( $С$8:$С$83 ;5) В этом примере четко проявляется коварство функции НАИБОЛЬШИЙ(). Если отсортировать столбец С (цены), то получим: 750; 700; 700 ; 700; 620, 620, 160, … В человеческом понимании «3-ей по величине цене» соответствует 620, а в понимании функции НАИБОЛЬШИЙ() – 700 . В итоге, будет выведено не 4 строки, а только одна (750);
  • Вывод строк с учетом РЕгиСТра =СОВПАД("гвозди";А8) . Будут выведены только те строки, в которых товар гвозди введен с использованием строчных букв;
  • Вывод строк, у которых цена выше среднего =С8>СРЗНАЧ($С$8:$С$83) ;

ВНИМАНИЕ! Применение Расширенного фильтра отменяет примененный к таблице фильтр ( Данные/ Сортировка и фильтр/ Фильтр ).

Задача 7 (Условия отбора содержат формулы и обычные критерии)

Рассмотрим теперь другую таблицу из файла примера на листе Задача 7 .

В столбце Товар приведено название товара, а в столбце Тип товара - его тип.

Задача состоит в том, чтобы для заданного типа товара вывести товары, у которых цена ниже средней. То есть у нас 3 критерия: первый критерий задает Товар, 2-й - его Тип, а 3-й критерий (в виде формулы) задает цену ниже средней.

Критерии разместим в строках 6 и 7. Введем нужные Товар и Тип товара. Для заданного Тип товара вычислим среднее и выведем ее для наглядности в отдельную ячейку F7. В принципе, формулу можно ввести прямо в формулу-критерий в ячейку С7. Поясняющий текст в ячейке над формулой (С6) НЕ должен совпадать ни с одним заголовком столбца таблицы! В противном случае фильтр будет работать неправильно.

Далее действуем как обычно: выделяем любую ячейку таблицы, вызываем Расширенный фильтр (Advanced Filter) и указываем диапазон с критериями.

Будут выведены 2 товара из 4-х (заданного типа товара).

В файле примера для удобства использовано Условное форматирование : выделяются строки удовлетворяющие первым 2-м критериям (подробнее см. статью Выделение строк таблицы в MS EXCEL в зависимости от условия в ячейке ).

Задача 7.1. (Совпадают ли 2 значения в одной строке?)

Есть таблица, в которой указаны Год выпуска и Год покупки автомобиля.

Требуется вывести только те строки, в которых Год выпуска совпадает с Годом покупки. Это можно сделать с помощью элементарной формулы =В10=С10 .

Поясняющий текст в ячейке С6 НЕ должен совпадать ни с одним заголовком столбца таблицы! В противном случае фильтр будет работать неправильно.

Задача 8 (Является ли символ числом?)

Пусть у нас есть таблица с перечнем различных типов гвоздей.

Требуется отфильтровать только те строки, у которых в столбце Товар содержится Гвозди 1 дюйм , Гвозди 2 дюйма и т.д. товары Гвозди нержавеющие, Гвозди хромированные и т.д. не должны быть отфильтрованы.

Проще всего это сделать если в качестве фильтра задать условие, что после слова Гвозди должно идти цифра. Это можно сделать с помощью формулы =ЕЧИСЛО(--ПСТР(A11;ДЛСТР($A$8)+2;1))

Формула вырезает из наименования товара 1 символ после слова Гвозди (с учетом пробела). Если этот символ число (цифра), то формула возвращает ИСТИНА и строка выводится, в противном случае строка не выводится. В столбце F показано как работает формула, т.е. ее можно протестировать до запуска Расширенного фильтра .

Задача 9 (Вывести строки, в которых НЕ СОДЕРЖАТСЯ заданные Товары)

Требуется отфильтровать только те строки, у которых в столбце Товар НЕ содержатся: Гвозди, Доска, Клей, Обои .

Для этого придется использовать простую формулу =ЕНД(ВПР(A15;$A$8:$A$11;1;0))

Функция ВПР() ищет в столбце Товар каждой строки наименования товаров, указанных в диапазоне А8:А11 . Если эти товары НЕ найдены, ВПР() возвращает ошибку #Н/Д, которая обрабатывается функцией ЕНД() - в итоге, формула возвращает ИСТИНА и строка выводится.

Вывод уникальных строк

О выводе уникальных строк с помощью Расширенного фильтра можно прочитать в этой статье .


Комментарии

Только для авторизованных пользователей

Аноним, 14 февраля 2015 г.
одна из лучших статей о расширенном фильтре
Аноним, 3 декабря 2015 г.
дл чайников)))))))...спаибо огромное за статью!!!!
Аноним, 29 мая 2017 г.
всё понятно, но у меня вопрос: есть ли этот фильтр в Excel 2007? я не могу найти
Михаил, 31 мая 2017 г.
Вкладка Данные, Кнопка Дополнительно находится в середине ленты
Аноним, 16 июня 2017 г.
понятно потому-что простые примеры, а вот попробуйте отфильтровать "гвозди" у которых цена ниже среднего значения для конкретного слова "гвозди" и я посмотрю как автор будет пыжиться((((((
Михаил, 18 июня 2017 г.
Оооо, Вы профессиональный мотиватор! Взяли меня на слабо. Вашу задачку я решил и дописал статью, см. задачу 7. PS. На будущее. не нужно писать в комментах свое мнение про автора, иначе придется вас забанить.
Аноним, 24 сентября 2017 г.
Добрый день. А как показать в формуле, чтоб цена находилась в каком-либо диапазоне, например от 50 до 100?
Михаил, 26 сентября 2017 г.
см. файл примера, лист Задачи 1-6, условия в ячейке Е13:F14
Аноним, 6 декабря 2017 г.
Подскажите, пожалуйста, а если в столбце "Товар" будут "Гвозди 1 дюйм", "Гвозди 2 дюйма" и "Гвозди нержавеющие", как выбрать "Гвозди 1 дюйм" и "Гвозди 2 дюйма". Т.е. условие на любое количество символов - это "*" (звездочка), а как задать условие, что ищется именно число?
Михаил, 7 декабря 2017 г.
Отличный вопрос. В статье сделал задачу 8 и обновил файл примера.
Аноним, 8 декабря 2017 г.
Здравствуйте. Подскажите, пожалуйста, как увеличить число критериев отбора в настраиваемом фильтре? Если мы ввели в первой строке (НЕ СОДЕРЖИТ "Гвозди"), во второй (НЕ СОДЕРЖИТ "Доски"), ещё нужно отсечь "Обои" и "Замазка", а нам нужны "Цемент", "Плитка", "Шурупы" и т.д.
Михаил, 9 декабря 2017 г.
Отличный вопрос. Решение в статье - задача 9, обновил файл примера.
Аноним, 12 декабря 2017 г.
Михаил, благодарю. В вашем примере мне все понятно, а вот свой что-то не задается. Можете подсказать, что делаю неправильно ? Из списка оказанных транспортных услуг надо отобрать различные ООО, например "ООО Удача" которые могут встречаться в списке от одного до десятка раз. Вверху ввел критерий для компании: "ООО Удача", а ниже идут такие строки из 1С: "Удача ООО РожковДоговор перевозки №27/04/16 от 27.04.2016 Реализация товаров и услуг ЦРОЖ0000077 от 31.03.2017 15:00:00" "Удача ООО РожковДоговор перевозки №27/04/16 от 27.04.2016 Реализация товаров и услуг ЦРОЖ0000169 от 31.05.2017 15:00:00" Информация из 1С идет с Enter-ми, поэтому формула везде мне говорит ИСТИНА. Некоторые данные начинаются словами из критерия, а вот для "ИП" такие слова находятся в середине текста. "Мошев А.Н. ИП Основной договор Реализация товаров и услуг ЦАЛТ0000035 от 24.01.2017 15:00:00" Функция "ЕНД(ВПР(,,,)) выдает, к сожалению, везде "ИСТИНА". В чем ошибка ?
Михаил, 12 декабря 2017 г.
Присылайте файл в нашу группу https://vk.com/excel2ru, разберемся
Аноним, 21 февраля 2018 г.
Как сделать фильтр сразу по нескольким словам: Содержит: "как", "откуда", "зачем", "почему" и так далее...
Михаил, 21 февраля 2018 г.
Задача 3 или 4, в зависимости от необходимости. Добавьте еще критериев.
Аноним, 11 июня 2020 г.
Здравствуйте, не смогла найти файл с Задачами 1-6. Ищу как записать фильтр для условия ДАТА от 1 апреля до 1 июня
Михаил, 11 июня 2020 г.
Здравствуйте, все задачи в одном файле. Нужно прокрутить ярлыки листов влево или нажать комбинацию клавиш CTRL+PgUp, когда открыт файл.
(только для авторизованных пользователей)

© Copyright 2013 - 2024 Excel2.ru. All Rights Reserved