Работа с большими таблицами в Microsoft Excel часто требует извлечения только релевантных данных. Представьте: у вас список из 10 000 заказов, но нужны только те, где указан статус «Отгружен» или содержится слово «срочный». Вручную просматривать каждую строку — неэффективно. К счастью, в Excel есть как минимум 5 способов автоматизировать этот процесс, и мы разберём их от простого к сложному.
Эта статья подойдёт и новичкам, и опытным пользователям: здесь есть решения без формул (для тех, кто боится функций), и продвинутые методы с Power Query или VBA для обработки миллионов строк. Важно: перед применением любых методов всегда дублируйте исходные данные — это убережёт от потери информации при ошибке.
Если вы работаете с Google Таблицами, большинство способов тоже применимы — различия мы отметим отдельно. А для тех, кто любит горячие клавиши, в конце статьи будет список сочетаний, ускоряющих фильтрацию.
1. Простой фильтр: самый быстрый способ для новичков
Метод автофильтра подходит, если нужно временно скрыть ненужные строки, не удаляя их. Это не изменит исходные данные, а лишь визуально отобразит только релевантные записи.
Чтобы применить фильтр:
- Выделите заголовки столбцов (строку с названиями).
- Нажмите
Ctrl+Shift+Lили перейдите на вкладкуДанные → Фильтр. - Кликните по стрелке в столбце, где нужно искать текст, и выберите
Текстовые фильтры → Содержит.... - Введите искомое слово (например, «важно») и нажмите
ОК.
✅ Плюсы: не требует знания формул, работает во всех версиях Excel (включая Excel 2010).
❌ Минусы: фильтр сбрасывается при закрытии файла, не подходит для постоянного удаления строк.
Важный нюанс: если в ячейке есть пробелы до/после текста, фильтр может не сработать. Используйте функцию =СЖПРОБЕЛЫ(), чтобы очистить данные перед фильтрацией.
2. Функция ФИЛЬТР (FILTER): динамическая фильтрация без VBA
В Excel 365 и Excel 2021 появилась революционная функция =ФИЛЬТР() (=FILTER() на английском), которая автоматически обновляет результат при изменении исходных данных. Она идеальна, если нужно оставить строки с определённым текстом в динамическом диапазоне.
Синтаксис:
=ФИЛЬТР(исходный_диапазон; (условие1) * (условие2); "Нет данных")
Пример: оставить строки, где в столбце B есть слово «ургентно» или «приоритет»:
=ФИЛЬТР(A2:D100; (ПОИСК("ургентно"; B2:B100)) + (ПОИСК("приоритет"; B2:B100)); "Нет срочных задач")
Функция
Если функция возвращает ошибку 1. Версию Excel (доступна только в 365/2021). 2. Локализацию: в русскоязычной версии используйте запятые, в английской — точки с запятой. 3. Диапазоны должны быть одинакового размера (например, ФИЛЬТР возвращает не статический результат, а «живую» таблицу, которая обновляется при редактировании исходных данных. Это удобно для дашбордов или отчётов, где данные меняются часто.
Что делать, если ФИЛЬТР не работает?
#ИМЯ?, проверьте:A2:A100 и B2:B100, а не A2:A100 и B2:B99).
3. Условное форматирование + фильтр по цвету
Этот метод полезен, если нужно визуально выделить строки с определённым текстом, а потом отфильтровать их по цвету. Например, чтобы быстро найти все ячейки со словом «брак» и покрасить их в красный.
Инструкция:
- Выделите диапазон данных (например,
A1:D1000). - Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=НЕ(ЕОШ(ПОИСК("брак"; A1)))(замените «брак» на свой текст). - Задайте формат (например, красный фон) и нажмите
ОК. - Теперь примените фильтр по цвету:
Данные → Фильтр → Фильтр по цвету ячейки.
⚠️ Внимание: этот способ работает только для текста в одной ячейке строки. Если текст может быть в любом из столбцов, используйте формулу массива:
=НЕ(ЕОШ(ПОИСК("брак"; A1:D1)))
Удалить лишние пробелы функцией СЖПРОБЕЛЫ()
Проверить регистр (функция ПОИСК чувствительна к нему)
Объединить ячейки, если текст разбит на несколько столбцов
Создать резервную копию данных-->
4. Power Query: обработка миллионов строк без тормозов
Power Query (или Пошаговая инструкция:
🔹 Преимущества Power Query:
Get & Transform в Excel 2016+) — это инструмент для работы с большими данными. Он позволяет фильтровать строки по тексту, не нагружая сам Excel. Особенно актуален, если у вас файлы размером 100+ МБ.
Данные → Из таблицы/диапазона (в Excel 2016 — Данные → Получить данные → Из таблицы/диапазона).Текстовые фильтры → Содержит....ОК.Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.
»).
Обновить все.
⚠️ Внимание: после загрузки данных в Excel они становятся статическими. Чтобы обновить фильтрацию, нужно повторно запустить запрос через Данные → Обновить все.
= Table.SelectRows(#"Предыдущий шаг", each Text.Contains(Text.Lower([Столбец]), "текст"))-->
5. VBA-макрос: автоматизация для повторяющихся задач
Если вам регулярно нужно оставлять строки с определённым текстом, макрос на VBA сэкономит часы времени. Например, чтобы еженедельно очищать отчёт от строк без слова «активно».
Пример кода для удаления всех строк, не содержащих искомый текст в столбце B:
Sub ОставитьСтрокиСТекстом()
Dim rng As Range, cell As Range, delRange As Range
Dim searchText As String
searchText = "активно" ' Замените на свой текст
Set rng = Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row)
For Each cell In rng
If InStr(1, cell.Value, searchText, vbTextCompare) = 0 Then
If delRange Is Nothing Then
Set delRange = cell.EntireRow
Else
Set delRange = Union(delRange, cell.EntireRow)
End If
End If
Next cell
If Not delRange Is Nothing Then delRange.Delete
End Sub
🔹 Как использовать:
⚠️ Внимание: макрос безвозвратно удаляет строки. Перед запуском:
Выбор способа зависит от задачи, объёма данных и вашего уровня владения Excel. Ниже таблица с сравнением ключевых параметров:
Даже опытные пользователи сталкиваются с проблемами при фильтрации текста. Вот топ-5 ошибок и их решения:
🔸 Ошибка 1: Фильтр не находит текст, хотя он есть в данных.
🔸 Ошибка 2: Функция 🔸 Ошибка 3: VBA-макрос удаляет не те строки.
🔸 Ошибка 4: Power Query не обновляет данные.
🔸 Ошибка 5: После фильтрации остались пустые строки.
Да! Для этого используйте: Пример формулы для поиска ячеек, содержащих «abc»: Используйте обратную логику: Да, но с нюансами: Пример формулы для Google Таблиц: Способы: Да! Используйте: (здесь Для условия ИЛИ замените
Alt+F11, чтобы открыть редактор VBA.Insert → Module).F5 или кнопку на панели.
.xlsm (чтобы сохранить макрос).Сравнение методов: какой выбрать?
Метод
Сложность
Макс. строк
Динамичность
Подходит для
Автофильтр
⭐
1 000 000+
❌ (сбрасывается)
Быстрого просмотра
Функция
ФИЛЬТР⭐⭐
1 000 000+
✅ (обновляется автоматически)
Дашбордов, отчётов
Условное форматирование
⭐⭐
100 000
❌
Визуального анализа
Power Query
⭐⭐⭐
10 000 000+
✅ (при ручном обновлении)
Больших файлов, ETL
VBA
⭐⭐⭐⭐
Неограничено
❌ (требует запуска)
Автоматизации рутинных задач
Частые ошибки и как их избежать
=СЖПРОБЕЛЫ() и =НИЖНРЕГ() для нормализации данных.ФИЛЬТР возвращает #ЗНАЧ!.
Debug.Print в код, чтобы отладить логику.
Данные → Обновить все или настройте автоматическое обновление в Свойствах соединения.
=ПЕЧСИМВ(A1), чтобы их обнаружить.FAQ: ответы на популярные вопросы
Можно ли отфильтровать строки по частичному совпадению текста?
Текстовые фильтры → Содержит....ПОИСК(), НАЙТИ() или ЕЧИСЛО(ПОИСК(...)).Text.Contains.=ЕЧИСЛО(ПОИСК("abc"; A1))Как оставить строки, где текст НЕ содержится?
Текстовые фильтры → Не содержит....=ФИЛЬТР(A2:D100; ЕОШ(ПОИСК("текст"; B2:B100)))InStr(...) = 0 на InStr(...) > 0 (и наоборот).Работает ли это в Google Таблицах?
Данные → Создать фильтр).=FILTER().Apps Script.Apps Script.=FILTER(A2:D100; REGEXMATCH(B2:B100; "текст"))Как сохранить отфильтрованные данные в новый файл?
Alt+;).Ctrl+C) и вставьте в новый файл.
Создать связь.Данные → Получить данные → Из других источников → Из таблицы/диапазона (Power Query).ActiveWorkbook.SaveAs "Путь\к\новому\файлу.xlsx"Можно ли фильтровать по нескольким словам одновременно?
=ФИЛЬТР(A2:D100; (ПОИСК("слово1"; B2:B100)) * (ПОИСК("слово2"; B2:B100)))* работает как логическое И).= Table.SelectRows(#"Предыдущий шаг", each Text.Contains([Столбец], "слово1") and Text.Contains([Столбец], "слово2"))* на + (в формулах) или or (в Power Query).