Если в вашей таблице Excel нужно отобразить только строки, содержащие конкретное слово, число или фразу — стандартный фильтр по столбцу не всегда справится. Проблема в том, что по умолчанию Excel фильтрует данные внутри одного столбца, а не по всей строке. Например, при поиске заказа №12345 по таблице с 20 столбцами вам придётся включать фильтр в каждом из них — или использовать специальные приёмы.
В этой статье разберём 5 способов фильтрации строк целиком: от встроенного автофильтра с подстановкой до формул массива и Power Query. Методы работают в Excel 2010–2023 и Microsoft 365, а для некоторых приведём альтернативы для Google Таблиц. Вы узнаете, как искать по частичному совпадению, нескольким критериям или даже по формату ячеек — с примерами для продаж, складского учёта и аналитики.
1. Базовый фильтр по строке через «Текстовый фильтр»
Самый быстрый способ отфильтровать строки по содержимому — использовать встроенный текстовый фильтр с логикой «ИЛИ» по всем столбцам. Подходит, если искомое значение может находиться в любом из столбцов, но вам не важно в каком именно.
Алгоритм:
- Выделите любую ячейку в таблице (или весь диапазон данных).
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Откройте выпадающий список фильтра в первом столбце и выберите
Текстовые фильтры→Содержит.... - В поле введите искомое значение (например, «Москва») и нажмите
ОК. - Повторите шаги 3–4 для всех остальных столбцов, используя то же значение.
Excel применит фильтр с логикой «ИЛИ»: будут показаны строки, где хотя бы в одной ячейке есть введённый текст. Минус метода — если в таблице 10+ столбцов, процесс становится утомительным. Для автоматизации используйте макрос (раздел 4).
⚠️ Внимание: Если в ячейках есть пробелы перед/после текста, фильтр может не сработать. Используйте функцию =TRIM(), чтобы очистить данные перед фильтрацией.
2. Фильтр по нескольким словам в строке (логика «И»)
Когда нужно найти строки, содержащие одновременно несколько слов (например, «Москва» и «опт»), стандартный фильтр не подходит. Решение — использовать расширенный фильтр с критериями.
Пошаговая инструкция:
- Скопируйте заголовки столбцов вашей таблицы в отдельный диапазон (например, на лист
Критерии). - Под заголовками введите условия:
=*Москва*опт*Здесь
*— подстановочный знак («любой символ»), а отсутствие пробела между словами означает логическое «И». - Вернитесь на лист с данными, выделите таблицу и перейдите в
Данные→Расширенный фильтр. - В поле
Исходный диапазонукажите вашу таблицу (например,A1:Z1000), вДиапазон условий— ячейки с критериями (например,Критерии!A1:A2). - Выберите
Фильтровать список на местеи нажмитеОК.
Альтернативный синтаксис для точного совпадения:
=Москва&опт
Здесь & объединяет два условия в одно.
| Тип условия | Синтаксис | Пример | Результат |
|---|---|---|---|
| Логическое «И» | =*слово1*слово2* | =*Москва*опт* | Строки, где есть оба слова в любом порядке |
| Точное совпадение | =слово1&слово2 | =Иванов&2023 | Строки с «Иванов» и «2023» |
| Начало/конец | =слово* или =слово | =ООО | Строки, начинающиеся на «ООО» |
| Исключение | <>слово | <>архив | Строки, где нет слова «архив» |
Как фильтровать по регистру (с учётом заглавных букв)
В Excel нет встроенной функции для регистрочувствительного фильтра. Используйте формулу массива:
=--(НЕ(ЕОШИБКА(ПОИСК("Москва";A2))))
И примените фильтр по результату (1 — есть совпадение, 0 — нет).
3. Фильтрация строк по формуле (динамический подход)
Если данные часто обновляются или нужно гибко менять критерии, оптимально использовать промежуточный столбец с формулой. Этот метод позволяет фильтровать по сложным условиям, включая регулярные выражения (через ПОИСК или РЕГВЫРАЖ в новых версиях Excel).
Пример для поиска строк, содержащих «Москва» или «Санкт-Петербург»:
- Добавьте справа от таблицы вспомогательный столбец (например,
Helper). - В первую ячейку столбца введите:
=ЕСЛИ(ИЛИ(ЕОШИБКА(ПОИСК("Москва";A2)); ЕОШИБКА(ПОИСК("Санкт-Петербург";A2))); 0; 1)Здесь
A2— первая ячейка строки, которую нужно проверить. - Растяните формулу на все строки таблицы.
- Примените стандартный фильтр к столбцу
Helperи отфильтруйте по значению1.
Для поиска по нескольким столбцам модифицируйте формулу:
=ЕСЛИ(ИЛИ(НЕ(ЕОШИБКА(ПОИСК("крит1";A2))); НЕ(ЕОШИБКА(ПОИСК("крит1";B2))); НЕ(ЕОШИБКА(ПОИСК("крит1";C2)))); 1; 0)
Где A2:C2 — диапазон ячеек строки для проверки.
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
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в модуль (меню
Insert→Module). - Закройте редактор и назначьте макрос на кнопку или горячую клавишу (
Alt+F8→Назначить макрос).
☑️ Подготовка к запуску макроса
⚠️ Внимание: Макрос фильтрует только видимые ячейки. Если в таблице уже применён фильтр, результат может быть некорректным. Сначала снимите все фильтры (Данные→Очистить).
5. Продвинутая фильтрация через Power Query
Для обработки больших объёмов данных (100 000+ строк) или сложных критериев (например, поиск по части номера телефона с учётом форматирования) оптимально использовать Power Query. Этот инструмент позволяет:
- 🔍 Искать по регулярным выражениям (например,
[А-Я]{3}\d{5}для поиска серийных номеров). - 📊 Объединять данные из нескольких листов/файлов перед фильтрацией.
- 🔄 Сохранять шаги обработки для повторного использования.
Инструкция для фильтрации строк по тексту:
- Выделите таблицу и перейдите на вкладку
Данные→Из таблицы/диапазона(в Excel 2016+). - В открывшемся редакторе Power Query выделите все столбцы (клик по заголовку первого столбца +
Shift+ клик по последнему). - На вкладке
ГлавнаявыберитеФильтр строк→Текстовые фильтры→Содержит.... - Введите искомый текст и нажмите
ОК. - Нажмите
Закрыть и загрузить, чтобы вернуть отфильтрованные данные на новый лист.
Для поиска по нескольким словам с логикой «ИЛИ»:
- Добавьте пользовательский столбец (вкладка
Добавить столбец→Пользовательский столбец). - Введите формулу:
= Text.Contains([Столбец1], "Москва") or Text.Contains([Столбец2], "Москва")Замените
[Столбец1]и[Столбец2]на реальные имена столбцов. - Отфильтруйте новый столбец по значению
TRUE.
6. Фильтрация по формату ячеек (цвет, шрифт, условное форматирование)
Иногда требуется фильтровать строки не по содержимому, а по оформлению: цвету фона, шрифту или условному форматированию. Например, найти все строки с красным фоном (помеченные как срочные) или жирным шрифтом (важные клиенты).
Способ 1: Фильтр по цвету ячейки
- Примените к таблице стандартный фильтр (
Ctrl+Shift+L). - Откройте выпадающий список в любом столбце и выберите
Фильтр по цвету→Фильтр по цвету ячейки. - Выберите нужный цвет из палитры. 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)?
Используйте расширенный фильтр с критериями:
- Создайте диапазон критериев с заголовком столбца (например,
Сумма). - Под заголовком введите две строки:
>=100<=500
- Примените расширенный фильтр (
Данные→Расширенный фильтр).
Для фильтрации по нескольким числовым столбцам (например, «Сумма от 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