Как в Excel отфильтровать данные по части наименования в строке: 5 работающих способов

Почему стандартный фильтр не всегда находит нужные строки

Вы когда-нибудь пытались найти в Excel строку с фрагментом текста — например, все товары с названием «iPhone 15» в колонке «Модель», — но фильтр упорно игнорировал часть записей? Проблема в том, что стандартный автофильтр ищет точные вхождения или начало слова, а не произвольный фрагмент внутри ячейки. Если в вашей таблице есть строки «Чехол для iPhone 15 Pro» и «iPhone 15 Plus + зарядка», фильтр по запросу «iPhone 15» может их пропустить.

Эта статья разберёт 5 способов фильтрации — от простых до продвинутых, — которые помогут найти строки по любому фрагменту текста, включая регистрозависимый поиск, регулярные выражения и даже фильтрацию по нескольким ключевым словам одновременно. Мы рассмотрим не только ручные методы, но и автоматизацию через Power Query и VBA для обработки больших массивов данных.

Особое внимание уделим типичным ошибкам: почему фильтр не работает с пробелами, как избежать ложных срабатываний (например, когда «iPhone 15» находит также «iPhone 150»), и как ускорить поиск в таблицах с 100+ тысячами строк.

Способ 1: Автофильтр с подстановочными знаками

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

  1. Выделите заголовок столбца, по которому нужно фильтровать (например, «Наименование»).
  2. Нажмите Данные → Фильтр (или сочетание Ctrl+Shift+L).
  3. Щёлкните по стрелке фильтра в заголовке столбца и выберите Текстовые фильтры → Содержит....
  4. В поле ввода укажите искомый фрагмент, например iPhone 15, и нажмите ОК.

Но что, если нужно найти строки, где фрагмент может быть в любом месте ячейки, включая начало или конец? Здесь помогут подстановочные знаки:

  • 🔹 * — заменяет любое количество символов (включая ноль). Пример: фильтр iPhone 15 найдёт «Чехол для iPhone 15», «iPhone 15 Pro Max» и «Защитное стекло iPhone 15».
  • 🔹 ? — заменяет один символ. Пример: iPhone 1? найдёт «iPhone 15» и «iPhone 14», но не «iPhone 150».
  • 🔹 ~ — экранирует подстановочные знаки. Если искать ~*, Excel найдёт ячейки со звёздочкой.
⚠️ Внимание: Автофильтр с подстановочными знаками не различает регистр. Если нужно найти именно «iPhone», а не «IPHONE» или «iphone», используйте методы из следующих разделов.

Способ 2: Функция ФИЛЬТР (FILTER) для динамических данных

Если вам нужно не просто отобразить отфильтрованные строки, а получить динамический массив, который автоматически обновляется при изменении исходных данных, используйте функцию ФИЛЬТР (доступна в Excel 365 и Excel 2021).

Синтаксис функции:

=ФИЛЬТР(массив; (условие1)  (условие2)  ...; [если_пусто])

Пример: отфильтруем таблицу с товарами, оставив только те строки, где в столбце B (Наименование) есть фрагмент «Pro»:

=ФИЛЬТР(A2:D100; ПОИСК("Pro"; B2:B100); "Нет данных")

Разберём аргументы:

  • 📌 A2:D100 — диапазон исходной таблицы.
  • 📌 ПОИСК("Pro"; B2:B100) — условие: ищем «Pro» в столбце B. Функция ПОИСК возвращает позицию подстроки или ошибку #ЗНАЧ!, если фрагмент не найден.
  • 📌 "Нет данных" — сообщение, если фильтрация не дала результатов.

Преимущество этого метода — автоматическое обновление при изменении исходных данных. Однако у него есть ограничения:

  • ❌ Не работает в Excel 2019 и более ранних версиях.
  • ❌ Медленно обрабатывает таблицы с >50 000 строк.
📊 Какой версии Excel вы пользуетесь?
Excel 365
Excel 2021
Excel 2019
Excel 2016 или старше

Способ 3: Формулы ПОИСК/НАЙТИ + Фильтр по значению

Если у вас старая версия Excel или нужно более гибкое условие, комбинируйте функции ПОИСК (регистронезависимый поиск) и НАЙТИ (регистрозависимый) с вспомогательным столбцом.

Допустим, у нас таблица с товарами в столбцах A:D, и мы хотим отфильтровать строки, где в столбце B есть слово «AirPods» (с учётом регистра). Действуем так:

  1. Добавьте вспомогательный столбец E с формулой:
    =ЕСЛИ(ЕЧИСЛО(НАЙТИ("AirPods"; B2)); "Да"; "Нет")

    Эта формула проверяет, содержится ли «AirPods» в ячейке B2, и возвращает «Да» или «Нет».

  2. Скопируйте формулу на все строки таблицы.
  3. Примените автофильтр к столбцу E и отфильтруйте по значению «Да».

Для поиска нескольких фрагментов (например, «AirPods» или «iPhone») модифицируйте формулу:

=ЕСЛИ(ИЛИ(ЕЧИСЛО(НАЙТИ("AirPods"; B2)); ЕЧИСЛО(НАЙТИ("iPhone"; B2))); "Да"; "Нет")
⚠️ Внимание: Функция НАЙТИ вернёт ошибку, если искомый фрагмент отсутствует. Обёртка в ЕЧИСЛО преобразует ошибку в ЛОЖЬ, что позволяет избежать сбоя формулы.
Функция Регистрозависимость Возвращает Пример использования
ПОИСК Нет Позицию подстроки или #ЗНАЧ! =ПОИСК("pro"; A1) найдёт "Pro", "PRO", "pro"
НАЙТИ Да Позицию подстроки или #ЗНАЧ! =НАЙТИ("Pro"; A1) найдёт только "Pro"
ПОДСТАВИТЬ Да Текст с заменённым фрагментом =ПОДСТАВИТЬ(A1; "Pro"; "Pro Max")

Способ 4: Power Query для сложной фильтрации

Если вам нужно отфильтровать данные по части наименования с дополнительными условиями (например, только строки, где фрагмент встречается дважды или в сочетании с другими критериями), используйте Power Query. Этот инструмент позволяет:

  • 🔧 Применять несколько фильтров одновременно (например, «название содержит Pro» И «цена > 50 000»).
  • 🔧 Использовать регулярные выражения для сложных шаблонов.
  • 🔧 Обрабатывать миллионы строк без замедления.

Пошаговая инструкция:

  1. Выделите исходную таблицу и нажмите Данные → Из таблицы/диапазона (в группе Получить и преобразовать).
  2. В открывшемся редакторе Power Query щёлкните по стрелке фильтра в столбце с наименованиями.
  3. Выберите Текстовые фильтры → Содержит... и введите искомый фрагмент.
  4. Для регулярных выражений используйте Текстовые фильтры → Дополнительно → Соответствует шаблону (например, шаблон .iPhone\s15. найдёт «iPhone 15» с любыми символами до и после).
  5. Нажмите Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.
Пример регулярного выражения для Power Query

Шаблон .(iPhone\s15|AirPods\sPro). найдёт строки, содержащие либо «iPhone 15», либо «AirPods Pro» (с учётом пробела после названия модели).

Преимущество Power Query — возможность сохранять шаги фильтрации и обновлять данные одним кликом. Это незаменимо для еженедельных отчётов или работы с внешними источниками (например, CSV или SQL).

Способ 5: VBA для автоматизации фильтрации

Если вам нужно фильтровать данные по части наименования регулярно и по сложным правилам, напишите макрос на VBA. Например, этот код отфильтрует столбец B по фрагменту «Pro», учитывая регистр:

Sub FilterByText()

Dim ws As Worksheet

Dim rng As Range

Dim filterText As String

Set ws = ActiveSheet

filterText = "Pro" ' Искомый фрагмент

Set rng = ws.Range("B1:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)

' Очищаем предыдущий фильтр

If ws.AutoFilterMode Then ws.AutoFilterMode = False

' Применяем фильтр с учётом регистра

rng.AutoFilter Field:=1, Criteria1:="=" & filterText & "", Operator:=xlAnd

End Sub

Чтобы запустить макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Запустите макрос нажатием F5.

Для расширенной фильтрации (например, по нескольким фрагментам или с исключениями) модифицируйте код:

Sub AdvancedFilter()

Dim ws As Worksheet

Set ws = ActiveSheet

' Фильтр по двум фрагментам: "Pro" ИЛИ "Max"

ws.Range("A1:D" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row).AutoFilter _

Field:=2, Criteria1:=Array("" & "Pro" & "", "" & "Max" & ""), _

Operator:=xlFilterValues

End Sub

⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе код не выполнится. Также отключите защиту листа, если она включена.

Сохранить файл как .xlsm|Отключить защиту листа|Проверить имя листа в коде|Запустить макрос в безопасном режиме-->

Типичные ошибки и как их избежать

Даже опытные пользователи Excel сталкиваются с проблемами при фильтрации по части наименования. Вот самые распространённые ошибки и их решения:

  • 🚫 Фильтр не находит строки с пробелами.
    Причина: В данных могут быть неразрывные пробелы (символ CHAR(160)) вместо обычных.
    Решение: Замените их функцией =ПОДСТАВИТЬ(A1; СИМВОЛ(160); " ").
  • 🚫 Фильтр игнорирует регистр.
    Причина: Функции ПОИСК и автофильтр по умолчанию регистронезависимы.
    Решение: Используйте НАЙТИ или Power Query с учётом регистра.
  • 🚫 Фильтрация работает слишком медленно.
    Причина: В таблице >100 000 строк, и Excel обрабатывает их построчно.
    Решение: Преобразуйте данные в умную таблицу (Ctrl+T) или используйте Power Query.

Ещё одна частая проблема — ложные срабатывания. Например, фильтр по «iPhone 15» может найти «iPhone 150». Чтобы этого избежать, используйте регулярные выражения в Power Query или модифицируйте условие:

=ФИЛЬТР(A2:D100; (ПОИСК("iPhone 15"; B2:B100) > 0) * (ПОИСК("iPhone 15"; B2:B100) = ПОИСК("iPhone 150"; B2:B100) = ЛОЖЬ))

FAQ: Ответы на частые вопросы

Можно ли отфильтровать данные по части наименования без вспомогательного столбца?

Да, в Excel 365/2021 используйте функцию ФИЛЬТР (см. Способ 2). В старых версиях придётся создать вспомогательный столбец или использовать VBA.

Как найти строки, где фрагмент встречается в начале или конце ячейки?

Используйте подстановочные знаки:

  • 🔸 iPhone* — фрагмент в начале.
  • 🔸 *Pro — фрагмент в конце.

В Power Query для этого есть отдельные опции фильтра: «Начинается с» и «Заканчивается на».

Почему фильтр не работает с кириллицей?

Возможные причины:

  1. Файл сохранён в кодировке ANSI вместо UTF-8 (актуально для .csv).
  2. В данных есть непечатаемые символы (например, CHAR(10) — перенос строки). Используйте =ЧИСТ(A1) для очистки.
  3. Ячейки отформатированы как Текст, но содержат числа. Преобразуйте формат в Общий.

Как отфильтровать данные по нескольким фрагментам одновременно?

Используйте функцию ИЛИ во вспомогательном столбце:

=ЕСЛИ(ИЛИ(ЕЧИСЛО(ПОИСК("фрагмент1"; A1)); ЕЧИСЛО(ПОИСК("фрагмент2"; A1))); "Да"; "Нет")

Или в Power Query примените несколько фильтров с оператором «ИЛИ».

Можно ли сохранить фильтр, чтобы не настраивать его каждый раз?

Да, несколько способов:

  • 📹 Сохраните файл как .xltm (шаблон с макросами).
  • 📹 В Power Query сохраните запрос — он будет доступен при следующем открытии файла.
  • 📹 Запишите макрос (Вид → Макросы → Записать макрос) и назначьте ему сочетание клавиш.