Расширенный фильтр Excel – великолепная альтернатива регулярным выражениям
Текст представляет собой адаптированный перевод статьи Annie Cushing (Энни Кашинг), оригинал — Advanced Filters: Excel's Amazing Alternative To Regex. Курсивом выделяются названия пунктов меню для Excel 2013 и Mac 2011 или термины.
Всегда казалось странным, что Excel не поддерживает регулярные выражения (кои в среде программистов зовут регулярками или регэкспами). С их помощью делают сложную сортировку и фильтрацию. Инструмент SeoTools plugin for Excel поддерживает регулярки, но, как и большинство дополнительных ресурсов для Excel, работает только на платформе ПК. Эта статья предназначена, в основном, для пользователей Mac (мы не рекламируем SeoTools).

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

Немного теории

Всегда казалось странным, что Excel не поддерживает регулярные выражения (кои в среде программистов зовут регулярками или регэкспами). С их помощью делают сложную сортировку и фильтрацию. Инструмент SeoTools plugin for Excel поддерживает регулярки, но, как и большинство дополнительных ресурсов для Excel, работает только на платформе ПК. Эта статья предназначена, в основном, для пользователей Mac (мы не рекламируем SeoTools).

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

Подготовка к работе с расширенным фильтром

Для дальнейшего нам нужен «подопытный» — база данных, над которой будем ставить эксперименты. Мы её оставили отформатированной под таблицу. Но это лишь для «красоты», поскольку применение расширенного фильтра удалит стандартные табличные фильтры. Последние можно включить повторно по окончании получения наборов данных.

Расширенный фильтр находится:

Для ПК: Данные > Сортировка и фильтр >Дополнительно.

Для Мак: Данные > Сортировка и фильтр > Фильтр > Расширенный фильтр

Пользователи Mac могут щёлкнуть ПКМ по таблице и выбрать нужный пункт из контекстного меню. На ПК такой возможности нет.
Ещё один момент — база данных должна иметь заголовки столбцов, как показано ниже.

Небольшой совет

Подробная информация о фильтрах приведена ниже в пунктах Операторы, Заголовки и Множественные условия.

Базовые операторы

В дополнение к вышеупомянутым подстановочным знакам приведём некоторые операторы, необходимые при работе с фильтром:

  • = равенство, т.е. левая и правая часть должна совпасть: =билет [включит все ячейки, содержащие билет]
  • <> не равно, левая и правая часть не должны совпасть: <> https://www.aviasales.ru/mag* [исключаем данный адрес (блог)]
  • ' апостроф преобразует формулу в текст, если поставить его первым в ячейке: '=купить авиабилет
  • > больше чем: >500
  • >= больше или равно: B4-C4>=3
  • < меньше чем: C6<D6
  • <= меньше или равно: <=3

Заголовки

Чтобы начать работу с расширенным фильтром, скопируйте заголовки базы данных в удобное место вне самой базы. Как правило, отбор идёт по одному столбцу, но встречаются и более сложные случаи. На первых порах сделайте заголовки как в учебной базе. Критерии для отбора пишутся непосредственно под заголовками. Примеры приведены ниже.

Набор условий

Вот три базовых конструкции для множественных условий:

ИЛИ: Если имеется несколько критериев и отбор нужен при совпадении хотя бы одного, используется логический оператор ИЛИ. При использовании таблицы условий это достигается расположением критериев вертикально на разных строках. Приведённый пример демонстрирует это:
Фильтр отберёт строки, для которых выполняется хотя бы одно из условий, т.е. либо Позиция меньше 11, либо Количество больше 1000. Оператор ИЛИ можно использовать и для одного столбца. В таком случае, все критерии располагаются друг под другом в целевом столбце.

И: Если необходимо одновременное соблюдение всех критериев, применяется логический оператор И. Для этого критерии располагают на одной строке.
Данный пример отбирает строки, где в столбце Ключевые слова встречается слово "купить" и нет слова "самолёт", также значение в Позиция больше 7, а значение в Среднемесячное количество больше 1000. Помним, что звёздочка обозначает любое количество знаков. В нашем примере будут отобраны строки, в которых встречается "купить" на любой позиции внутри ячейки. Обратите внимание, что отсев идёт по слову "самолёт", "самолет" вполне проходит.

ОБА ОПЕРАТОРА: Можно блеснуть своим умением, применив оба оператора для установки критериев.
Такая таблица условий слегка обескураживает. Но этот фильтр всего лишь отбирает строки, в которых присутствует слово "купить" или "аэрофлот", при этом нет слов "самолет" или "самолёт", а значения последнего столбца больше 1000.

Примечание: Чтобы получить текст вместо формул, достаточно поставить апостроф перед операторами сравнения: '=купить или '<>самолёт. Майкрософт на своём сайте советует излишне сложный способ, предлагая заключить в двойные кавычки всё выражение, а перед ним ставить знак равенства: ="=купить".

В файле справки самого Excel написано, что преобразовать формулу в текст можно, поставив первым знаком апостроф. Но на сайте предлагают весьма замысловатый путь.

Промежуток: Если необходимо получить данные, лежащие в некотором промежутке, можно применить следующий приём:
Эти условия отберут ключевые слова, для которых Среднемесячное количество находится в промежутке от 3700 до 10000.

Формулы: Это действительно мощный инструмент. Вместо таблицы критериев можно использовать формулы.
На примере сделано то же, что и в пункте Оба оператора. Только условия заданы с помощью формул.

Пара моментов, на которые необходимо обращать внимание при использовании формул:

  • Формула должна возвращать логическое значение ЛОЖЬ или ИСТИНА;
  • Заголовки над формулами должны отличаться от заголовков базы данных, можно вообще использовать пустую строку;
  • Формула должна ссылаться на ячейки первой строки под заголовками базы данных;
  • Ссылки на проверяемые ячейки базы должны быть относительными: вида С4, при абсолютных, таких как $C$4 — значение формул будет статичным, т.е. всегда ЛОЖЬ или всегда ИСТИНА.

Общий алгоритм

Пошаговый алгоритм работы с расширенным фильтром (полагаем, что данные и табличка условий уже подготовлена):

Шаг 1: Как упоминалось ранее, щёлкните любую ячейку внутри подготовленного набора данных и перейдите:

Данные > Сортировка и фильтр >Дополнительно для ПК. Для Мак: Данные > Сортировка и фильтр > Фильтр > Расширенный фильтр.

Откроется меню. Здесь приведён скриншот Excel 2013, но все пункты совпадают с Mac.
Шаг 2: Выберите, где будут размещаться отобранные данные. В большинстве случаев разумнее определить «другое место», это оставит неизменным исходный массив данных. Но выбор за вами.

Шаг 3: Для исходного диапазона Excel по умолчанию отбирает всю «таблицу». Это можно изменить, исключив ненужные столбцы. Но Excel позволит выбрать только прямоугольный диапазон. Чтобы отобрать столбцы с пропусками, введите названия целевых столбцов в свободных ячейках и укажите их адрес для диапазона вывода. В Дополнительных примерах приводится подробное пояснение.

Шаг 4: Для установки диапазона условий щёлкните внутри поля и выделите соответствующий диапазон на листе. Если нужно свернуть меню, нажмите на значок выбора диапазона справа от поля.

Шаг 5: Если выбран пункт Cкопировать результат в другое место, укажите адрес в поле Поместить результат в диапазон. Можно указать единичную ячейку, тогда она станет верхней левой выводимого диапазона, или выбрать ячейки с введёнными названиями нужных столбцов.

Шаг 6: Если нужны только уникальные записи поставьте флажок. К сожалению, большинство людей используют исключительно эту функцию.

Шаг 7: Жмём OK, смотрим на результат.

Шаг 8: Если список фильтровался на месте, можно сбросить фильтр, нажав Очистить, но это верно для ПК. Данный пункт расположен выше пункта Дополнительно. На Маке присутствует аналог — Очистить фильтр, но он недоступен. Ещё один довод в пользу фильтрации на новое место. Чтобы сбросить фильтр нужно отменить действие — нажать Command-Z, или подключить стандартный фильтр.

Дополнительные примеры

1. Исключить слова

<> В данном контексте значит не содержит
2. Получить ключевые слова первой десятки

Заголовки двух столбцов скопированы для диапазона вывода
3. Вывести ключевые слова, для которых Cреднемесячное количество лежит в промежутке [5000, 10000]

Для получения промежутка копируем дважды заголовок столбца и вводим ограничения на одной строке.
4. Содержит хотя бы одно из слов: "купить", "аэрофлот". Не содержит слово "туту", и значение в столбце Среднемесячное количество больше 500

В ячейках с условиями первый знак — апостроф, увидеть его можно в строке формул.
5. Ключевые слова содержат "аэрофлот" и Среднемесячное количество больше 500

Как и в предыдущем примере, первый знак в ячейке — апостроф.
6. Ключевые слова, для которых Позиция меньше 3, или Среднемесячное количество больше 1000

Для диапазона условий ИЛИ наличие пустого столбца — не помеха.
7. Ключевые слова содержат, по крайней мере, 1 знак перед словом "аэрофлот"

Сочетание ?* требует наличия хотя бы 1 знака, но может содержать больше (эквивалент .+ в регулярках)
8. Ключевые слова, для которых Среднемесячное количество больше 8000

Сделано формулой, не забываем включить пустую ячейку над ней в диапазон условий.
9. Ключевые слова, для которых Среднемесячное количество больше 10000, а Конкурентность меньше 0,75

Используем функцию И в формуле.
10. Ключевые слова первой десятки по критерию Среднемесячное количество

Формула отбирает ячейки, значение которых больше или равно 10-му по величине числу. Само число получаем функцией НАИБОЛЬШИЙ. Обратите внимание, сравниваемая ячейка получена относительной ссылкой, а диапазон поиска для функции — абсолютной.

Заключительные рекомендации

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

  • Если случайно включить в диапазон условий пустые ячейки, расположенные под заполненными строками, то Excel воспримет их как условия, включающие всё.
  • Если вывод результатов идёт на другой лист, то запускать фильтр нужно с этого листа. Excel разрешает вывод результатов только на тот лист, с которого запущен фильтр.
  • Если фильтрации идёт на месте, то не получится последовательно применить несколько фильтров. Применение нового аннулирует предыдущие результаты.
  • Как уже писалось выше, пункт Очистить фильтр не работает в Excel 2011. Для сброса фильтра используйте отмену действия (Command-Z) или подключите обычный фильтр. В 2016 это исправили (прим. пер).
  • При выводе результатов в другое место полезно совместное применение оператора <>. Кроме того, можно транспонировать полученные данные: выделить, Копировать > Специальная вставка > флажок транспонировать.

Совет для продвинутых пользователей Excel

Для создания динамического фильтра можно сделать выпадающий список через пункт Проверка данных. Это позволит применять предопределённые значения для генерации фильтров. Но придётся каждый раз запускать расширенный фильтр вручную.

Однако существует хороший выход — макрос. Достаточно подключить несложный макрос и назначить его запуск по сочетанию клавиш или по щелчку на кнопке. Вместо кнопки можно использовать картинку. Например, такую:
Если вы затратите немного времени на изучение расширенного фильтра, то поймёте простоту и мощь данного инструмента.