Фильтр по строке в Excel: 5 рабочих методов от простого к сложному

Если в вашей таблице Excel нужно отобразить только строки, содержащие конкретное слово, число или фразу — стандартный фильтр по столбцу не всегда справится. Проблема в том, что по умолчанию Excel фильтрует данные внутри одного столбца, а не по всей строке. Например, при поиске заказа №12345 по таблице с 20 столбцами вам придётся включать фильтр в каждом из них — или использовать специальные приёмы.

В этой статье разберём 5 способов фильтрации строк целиком: от встроенного автофильтра с подстановкой до формул массива и Power Query. Методы работают в Excel 2010–2023 и Microsoft 365, а для некоторых приведём альтернативы для Google Таблиц. Вы узнаете, как искать по частичному совпадению, нескольким критериям или даже по формату ячеек — с примерами для продаж, складского учёта и аналитики.

1. Базовый фильтр по строке через «Текстовый фильтр»

Самый быстрый способ отфильтровать строки по содержимому — использовать встроенный текстовый фильтр с логикой «ИЛИ» по всем столбцам. Подходит, если искомое значение может находиться в любом из столбцов, но вам не важно в каком именно.

Алгоритм:

  1. Выделите любую ячейку в таблице (или весь диапазон данных).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Откройте выпадающий список фильтра в первом столбце и выберите Текстовые фильтрыСодержит....
  4. В поле введите искомое значение (например, «Москва») и нажмите ОК.
  5. Повторите шаги 3–4 для всех остальных столбцов, используя то же значение.

Excel применит фильтр с логикой «ИЛИ»: будут показаны строки, где хотя бы в одной ячейке есть введённый текст. Минус метода — если в таблице 10+ столбцов, процесс становится утомительным. Для автоматизации используйте макрос (раздел 4).

⚠️ Внимание: Если в ячейках есть пробелы перед/после текста, фильтр может не сработать. Используйте функцию =TRIM(), чтобы очистить данные перед фильтрацией.

2. Фильтр по нескольким словам в строке (логика «И»)

Когда нужно найти строки, содержащие одновременно несколько слов (например, «Москва» и «опт»), стандартный фильтр не подходит. Решение — использовать расширенный фильтр с критериями.

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

  1. Скопируйте заголовки столбцов вашей таблицы в отдельный диапазон (например, на лист Критерии).
  2. Под заголовками введите условия:
    =*Москва*опт*

    Здесь * — подстановочный знак («любой символ»), а отсутствие пробела между словами означает логическое «И».

  3. Вернитесь на лист с данными, выделите таблицу и перейдите в ДанныеРасширенный фильтр.
  4. В поле Исходный диапазон укажите вашу таблицу (например, A1:Z1000), в Диапазон условий — ячейки с критериями (например, Критерии!A1:A2).
  5. Выберите Фильтровать список на месте и нажмите ОК.

Альтернативный синтаксис для точного совпадения:

=Москва&опт

Здесь & объединяет два условия в одно.

Тип условияСинтаксисПримерРезультат
Логическое «И»=*слово1*слово2*=*Москва*опт*Строки, где есть оба слова в любом порядке
Точное совпадение=слово1&слово2=Иванов&2023Строки с «Иванов» и «2023»
Начало/конец=слово* или =слово=ОООСтроки, начинающиеся на «ООО»
Исключение<>слово<>архивСтроки, где нет слова «архив»
Как фильтровать по регистру (с учётом заглавных букв)

В Excel нет встроенной функции для регистрочувствительного фильтра. Используйте формулу массива:

=--(НЕ(ЕОШИБКА(ПОИСК("Москва";A2))))

И примените фильтр по результату (1 — есть совпадение, 0 — нет).

3. Фильтрация строк по формуле (динамический подход)

Если данные часто обновляются или нужно гибко менять критерии, оптимально использовать промежуточный столбец с формулой. Этот метод позволяет фильтровать по сложным условиям, включая регулярные выражения (через ПОИСК или РЕГВЫРАЖ в новых версиях Excel).

Пример для поиска строк, содержащих «Москва» или «Санкт-Петербург»:

  1. Добавьте справа от таблицы вспомогательный столбец (например, Helper).
  2. В первую ячейку столбца введите:
    =ЕСЛИ(ИЛИ(ЕОШИБКА(ПОИСК("Москва";A2)); ЕОШИБКА(ПОИСК("Санкт-Петербург";A2))); 0; 1)

    Здесь A2 — первая ячейка строки, которую нужно проверить.

  3. Растяните формулу на все строки таблицы.
  4. Примените стандартный фильтр к столбцу Helper и отфильтруйте по значению 1.

Для поиска по нескольким столбцам модифицируйте формулу:

=ЕСЛИ(ИЛИ(НЕ(ЕОШИБКА(ПОИСК("крит1";A2))); НЕ(ЕОШИБКА(ПОИСК("крит1";B2))); НЕ(ЕОШИБКА(ПОИСК("крит1";C2)))); 1; 0)

Где A2:C2 — диапазон ячеек строки для проверки.

📊 Какой метод фильтрации вы используете чаще?
Стандартный текстовый фильтр
Расширенный фильтр с критериями
Формулы в вспомогательном столбце
Power Query
Макросы/VBA

4. Автоматизация фильтра через макрос VBA

Для крупных таблиц (10 000+ строк) ручная фильтрация неэффективна. Макрос VBA позволит фильтровать строки по любому тексту за 1 клик, а также сохранять часто используемые критерии.

Код для фильтрации по введённому пользователем значению:

Sub FilterRowsByText()

Dim searchText As String

Dim ws As Worksheet

Dim rng As Range, cell As Range

Dim i As Long, lastRow As Long

' Запрашиваем текст для поиска

searchText = InputBox("Введите текст для фильтрации строк:", "Фильтр по строке")

If searchText = "" Then Exit Sub

' Определяем активный лист и диапазон данных

Set ws = ActiveSheet

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

Set rng = ws.Range("A1:Z" & lastRow) ' Диапазон A:Z, измените при необходимости

' Снимаем предыдущие фильтры

If ws.AutoFilterMode Then ws.AutoFilterMode = False

' Применяем фильтр по всем столбцам

rng.AutoFilter

For i = 1 To rng.Columns.Count

rng.Columns(i).AutoFilter Field:=i, Criteria1:="=" & searchText & "", Operator:=xlOr

Next i

End Sub

Как использовать:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (меню InsertModule).
  3. Закройте редактор и назначьте макрос на кнопку или горячую клавишу (Alt+F8Назначить макрос).

☑️ Подготовка к запуску макроса

Выполнено: 0 / 4
⚠️ Внимание: Макрос фильтрует только видимые ячейки. Если в таблице уже применён фильтр, результат может быть некорректным. Сначала снимите все фильтры (ДанныеОчистить).

5. Продвинутая фильтрация через Power Query

Для обработки больших объёмов данных (100 000+ строк) или сложных критериев (например, поиск по части номера телефона с учётом форматирования) оптимально использовать Power Query. Этот инструмент позволяет:

  • 🔍 Искать по регулярным выражениям (например, [А-Я]{3}\d{5} для поиска серийных номеров).
  • 📊 Объединять данные из нескольких листов/файлов перед фильтрацией.
  • 🔄 Сохранять шаги обработки для повторного использования.

Инструкция для фильтрации строк по тексту:

  1. Выделите таблицу и перейдите на вкладку ДанныеИз таблицы/диапазонаExcel 2016+).
  2. В открывшемся редакторе Power Query выделите все столбцы (клик по заголовку первого столбца + Shift + клик по последнему).
  3. На вкладке Главная выберите Фильтр строкТекстовые фильтрыСодержит....
  4. Введите искомый текст и нажмите ОК.
  5. Нажмите Закрыть и загрузить, чтобы вернуть отфильтрованные данные на новый лист.

Для поиска по нескольким словам с логикой «ИЛИ»:

  1. Добавьте пользовательский столбец (вкладка Добавить столбецПользовательский столбец).
  2. Введите формулу:
    = Text.Contains([Столбец1], "Москва") or Text.Contains([Столбец2], "Москва")

    Замените [Столбец1] и [Столбец2] на реальные имена столбцов.

  3. Отфильтруйте новый столбец по значению TRUE.

6. Фильтрация по формату ячеек (цвет, шрифт, условное форматирование)

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

Способ 1: Фильтр по цвету ячейки

  1. Примените к таблице стандартный фильтр (Ctrl+Shift+L).
  2. Откройте выпадающий список в любом столбце и выберите Фильтр по цветуФильтр по цвету ячейки.
  3. Выберите нужный цвет из палитры. Excel отобразит только строки, где хотя бы одна ячейка в строке имеет этот цвет.

Способ 2: Поиск по условному форматированию (для Excel 2013+)

  • 📌 Используйте функцию GET.CELL в именованном диапазоне:
    =GET.CELL(38,!A1)

    Где 38 — код свойства «цвет фона», а !A1 — ссылка на ячейку (обязательно с восклицательным знаком!).

  • 📌 Примените Условное форматированиеСоздать правилоИспользовать формулу с функцией =GET.CELL(...) для выделения цветом.
  • 📌 Отфильтруйте по полученному цвету (способ 1).
⚠️ Внимание: Функция GET.CELL работает только в именованных диапазонах и требует ручного обновления (F9). Для динамического отслеживания используйте VBA.

Частые ошибки и решения

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

ОшибкаПричинаРешение
Фильтр не находит очевидные совпаденияЛишние пробелы или непечатаемые символы в ячейкахИспользуйте =TRIM(CLEAN(A2)) для очистки данных
Фильтр применяется не ко всей таблицеExcel автоматически определяет диапазон по пустым строкам/столбцамВыделите диапазон вручную перед включением фильтра
После фильтрации остаются пустые строкиВ таблице есть скрытые символы (например, перевод строки)Примените фильтр по формуле =A2<>"" для исключения пустых ячеек
Не работает фильтр по датамДата хранится как текст (например, «01.01.2023» вместо серийного числа)Преобразуйте текст в дату через ДАТАЗНАЧ() или Power Query
Фильтр сбрасывается при обновлении данныхДиапазон таблицы не зафиксированПреобразуйте данные в Умную таблицу (Ctrl+T)

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

  • 🔹 Формат данных: числа хранятся как текст, даты — как строки.
  • 🔹 Объединённые ячейки: фильтр игнорирует объединённые диапазоны.
  • 🔹 Скрытые столбцы: они могут содержать критерии, влияющие на результат.

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

Можно ли фильтровать строки по нескольким листам одновременно?

Да, но только через Power Query или VBA. В Power Query импортируйте все листы (ДанныеИз книги), объедините их (Объединить запросыДобавить как новый), затем примените фильтр. В VBA используйте цикл по листам:

For Each ws In ThisWorkbook.Worksheets

ws.Range("A1:Z" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row).AutoFilter Field:=1, Criteria1:="=" & searchText & ""

Next ws

Как сохранить отфильтрованные данные на новый лист?

Способ 1: Скопируйте видимые строки (Alt+; для выделения → Ctrl+C → вставка на новый лист).

Способ 2: В Power Query после фильтрации выберите Закрыть и загрузить в...Новый лист.

Способ 3: В VBA используйте:

Sheets.Add

ActiveSheet.Name = "Фильтрованные данные"

Selection.SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Фильтрованные данные").Range("A1")

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

Проблема возникает из-за:

  • Несовпадения кодировки (например, данные импортированы из CSV в ANSI вместо UTF-8).
  • Непечатаемых символов (например, NBSP — неразрывный пробел).

Решение: очистите данные через Power Query (замените кодировку на 1251 для Windows) или используйте формулу:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2; СИМВОЛ(160); " "); СИМВОЛ(13); "")
Как фильтровать строки по диапазону чисел (например, от 100 до 500)?

Используйте расширенный фильтр с критериями:

  1. Создайте диапазон критериев с заголовком столбца (например, Сумма).
  2. Под заголовком введите две строки:
    >=100
    

    <=500

  3. Примените расширенный фильтр (ДанныеРасширенный фильтр).

Для фильтрации по нескольким числовым столбцам (например, «Сумма от 100 до 500 или Количество от 5 до 10») используйте отдельные строки критериев:

Сумма    Количество

>=100

<=500

>=5

<=10
Можно ли фильтровать строки по картинкам или значкам условного форматирования?

Нет, стандартными средствами — нельзя. Обходные пути:

  • 🖼️ Для картинок: добавьте справа от таблицы вспомогательный столбец с формулой, проверяющей наличие объекта (требуется VBA).
  • ⚠️ Для значков: замените условное форматирование на светофоры (цвет ячейки) и фильтруйте по цвету.

Пример VBA для поиска строк со вставленными картинками:

Sub FindRowsWithPictures()

Dim shp As Shape, rng As Range

For Each shp In ActiveSheet.Shapes

If shp.Type = msoPicture Then

Set rng = Intersect(shp.TopLeftCell.EntireRow, ActiveSheet.UsedRange)

If rng Is Nothing Then Exit Sub

rng.Copy Destination:=Sheets("Результаты").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

End If

Next shp

End Sub