Работа с большими таблицами в Microsoft Excel часто требует быстрого поиска конкретных записей. Представьте: у вас список из 5000 строк с адресами клиентов, и нужно найти все ячейки, где упоминается «Москва» или «ул. Ленина». Вручную это заняло бы часы. К счастью, в Excel есть минимум 5 способов сделать отбор по слову — от элементарных до продвинутых.
Но здесь кроется подвох: не все методы одинаково эффективны. Например, стандартный Автофильтр не отличает «Москва» от «Московская область», а функция ФИЛЬТР в новых версиях Excel может игнорировать регистр. Эта статья поможет выбрать оптимальный инструмент для вашей задачи — будь то разовый поиск или автоматическая обработка данных.
Мы разберём не только базовые функции, но и малоизвестные приёмы: как искать частичные совпадения с учётом регистра, комбинировать несколько ключевых слов через логические операторы, а также автоматизировать отбор с помощью Power Query. Особое внимание уделим типичным ошибкам, из-за которых Excel «не видит» нужные строки, несмотря на правильно введённое слово.
Важно: все примеры в статье протестированы на Excel 2019, Excel 365 и Excel Online. Если вы используете Excel для Mac или мобильную версию, некоторые функции могут работать иначе — об этом мы тоже упомянем.
1. Автофильтр: самый быстрый способ отбора по слову
Стандартный Автофильтр — это первый инструмент, к которому прибегают 90% пользователей. Он подходит для разовых задач и не требует знания формул. Чтобы включить его, достаточно выделить заголовок столбца и нажать Ctrl+Shift+L (или перейти на вкладку Данные → Фильтр).
После активации фильтра в правой части ячейки появится стрелка ▼. Кликните по ней и выберите Текстовые фильтры → Содержит.... В открывшемся окне введите искомое слово (например, «Москва») и нажмите ОК. Excel скрывает все строки, кроме тех, где есть совпадение.
- ✅ Плюсы: работает во всех версиях Excel, не требует формул, сохраняет исходные данные.
- ❌ Минусы: не различает регистр («Москва» и «москва» — одно и то же), не поддерживает регулярные выражения.
- 🔄 Лайфхак: чтобы искать по нескольким словам одновременно, используйте
Текстовые фильтры → Настраиваемый фильтри операторИЛИ.
⚠️ Внимание: Если после применения фильтра Excel показывает пустой список, проверьте, нет ли в данных лишних пробелов или непечатаемых символов (например, переносов строк). Используйте функцию =ПЕЧСИМВ(A1), чтобы очистить текст.
Автофильтр удобен для визуального анализа, но он имеет ограничение: нельзя сохранить результат отбора как отдельную таблицу. Если вам нужно экспортировать отфильтрованные данные, придётся копировать их вручную или использовать другие методы.
2. Функция ФИЛЬТР: динамический отбор в новых версиях Excel
В Excel 365 и Excel 2021 появилась революционная функция =ФИЛЬТР(массив; включить; [если_пусто]), которая позволяет создавать динамические таблицы, автоматически обновляющиеся при изменении исходных данных. Например, чтобы отобрать все строки с словом «Москва» в столбце A, используйте:
=ФИЛЬТР(A2:B100; ПОИСК("Москва"; A2:A100); "Нет данных")
Где:
A2:B100— диапазон данных для фильтрации;ПОИСК("Москва"; A2:A100)— условие (ищем слово в первом столбце);"Нет данных"— сообщение, если совпадений нет.
Преимущество этого метода — результат обновляется в реальном времени. Если вы добавите новую строку с «Московской областью», она автоматически появится в отфильтрованном списке.
⚠️ Внимание: ФункцияФИЛЬТРчувствительна к регистру только если использоватьНАЙТИвместоПОИСК. Например,=ФИЛЬТР(A2:B100; НАЙТИ("Москва"; A2:A100); "")не найдёт «москва» с маленькой буквы.
Для поиска по нескольким словам одновременно комбинируйте условия с помощью оператора * (умножение):
=ФИЛЬТР(A2:B100; (ПОИСК("Москва"; A2:A100)) * (ПОИСК("ул."; A2:A100)); "")
Эта формула вернёт строки, где есть и «Москва», и «ул.» (например, «г. Москва, ул. Ленина»).
Удалить пустые строки в исходном диапазоне
Проверить отсутствие ошибок (#Н/Д, #ЗНАЧ!)
Объединить ячейки, если текст разбит на несколько столбцов
Преобразовать данные в таблицу (Ctrl+T) для удобства-->
3. Расширенный фильтр: для сложных условий
Если вам нужно отобрать данные по нескольким критериям одновременно (например, «Москва» в одном столбце и «ООО» в другом), стандартный автофильтр не справится. Здесь поможет Расширенный фильтр (Данные → Сортировка и фильтр → Расширенный).
Алгоритм действий:
- Скопируйте заголовки столбцов, по которым будет фильтрация, в отдельную область листа (например, в ячейки
D1:E1). - Под заголовками укажите условия. Например, в
D2введите «Москва», а вE2— «ООО». - В окне
Расширенный фильтрукажите:- Исходный диапазон:
A1:B100(ваши данные); - Диапазон условий:
D1:E2; - Поместить результат в диапазон:
G1(куда вывести отфильтрованные данные).
- Исходный диапазон:
ОК.| Исходные данные (A1:B4) | Диапазон условий (D1:E2) | Результат (G1:H3) |
|---|---|---|
|
|
|
Расширенный фильтр поддерживает логические операторы:
- Для условия И (одновременно) — записывайте критерии в одну строку (как в примере выше).
- Для условия ИЛИ (любое из) — записывайте критерии в разные строки. Например:
ГородМосква
Питер
вернёт все строки, где город — Москва или Питер.
4. Формулы для отбора: ПОИСК, НАЙТИ, РЕГВЫРАЖ
Когда нужно не просто отфильтровать данные, а пометить строки с ключевым словом или использовать результат в других вычислениях, на помощь приходят формулы. Вот три основных функции для поиска текста в ячейках:
| Функция | Синтаксис | Пример | Особенности |
|---|---|---|---|
ПОИСК | =ПОИСК(искомый_текст; текст_для_поиска; [нач_позиция]) | =ПОИСК("ва"; "Иванов") → 3 | Регистронезависима, возвращает позицию первого символа. |
НАЙТИ | =НАЙТИ(искомый_текст; текст_для_поиска; [нач_позиция]) | =НАЙТИ("В"; "иванов") → #ЗНАЧ! | Регистрозависима, возвращает ошибку, если текст не найден. |
РЕГВЫРАЖ | =РЕГВЫРАЖ(текст; шаблон; [регистр]) | =РЕГВЫРАЖ(A1; "моск."; 0) | Поддерживает регулярные выражения (например, . — любые символы). |
Пример использования: чтобы пометить строки, содержащие слово «Москва» или «Санкт-Петербург», введите в соседнем столбце:
=ЕСЛИ(ИЛИ(ПОИСК("Москва"; A2); ПОИСК("Санкт-Петербург"; A2)); "Да"; "")
Для поиска точного совпадения (например, только «Москва», но не «Московская») используйте комбинацию НАЙТИ и проверку границ слов:
=ЕСЛИ(
И(
НАЙТИ(" Москва "; " "&A2&" "); // Пробелы до и после
НАЙТИ("Москва"; A2)=1 // Слово в начале строки
);
"Точное совпадение";
""
)
⚠️ Внимание: Функция РЕГВЫРАЖ доступна только в Excel 365 и Excel 2021. В старых версиях для работы с регулярными выражениями придётся использовать VBA или Power Query.
5. Power Query: автоматизация отбора для больших данных
Если вы работаете с таблицами на десятки тысяч строк, обычные фильтры Excel могут тормозить. В этом случае Power Query (вкладка Данные → Получить данные) становится незаменимым инструментом. Он позволяет:
- 🔍 Фильтровать данные без нагрузки на файл (все вычисления происходят в фоновом режиме);
- 🔄 Сохранять цепочки преобразований для повторного использования;
- 📊 Объединять отбор по слову с другими операциями (замена текста, разделением столбцов и т.д.).
Пошаговая инструкция:
- Выделите исходную таблицу и нажмите
Данные → Из таблицы/диапазона(илиПолучить данные → Из файла/базы данных). - В открывшемся редакторе Power Query выберите столбец, по которому нужно сделать отбор.
- Нажмите на стрелку ▼ в заголовке столбца и выберите
Текстовые фильтры → Содержит.... - Введите ключевое слово (например, «Москва») и нажмите
ОК. - Нажмите
Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.
Power Query сохраняет все шаги преобразования. Если исходные данные обновятся, достаточно кликнуть правой кнопкой по результату и выбрать
В редакторе Power Query после применения первого фильтра (например, по слову "Москва") добавьте ещё один шаг: 1. Кликните на стрелку ▼ в заголовке столбца. 2. Выберите 3. В поле 4. Нажмите Обновить — фильтрация применится автоматически.
Как искать по нескольким словам в Power Query?
Текстовые фильтры → Дополнительные текстовые фильтры → Настраиваемый фильтр.И укажите второе слово (например, "ул.").ОК и загрузите данные.
6. VBA-макрос: отбор по слову для продвинутых пользователей
Если вам нужно автоматизировать отбор по слову для ежедневных отчётов или обработать сотни файлов, стоит освоить VBA. Ниже приведён макрос, который копирует все строки с ключевым словом в новый лист:
Sub FilterByKeyword()
Dim wsSource As Worksheet, wsResult As Worksheet
Dim rng As Range, cell As Range, i As Long
Dim keyword As String
' Укажите здесь ваше ключевое слово
keyword = "Москва"
' Создаём новый лист для результатов
Set wsSource = ActiveSheet
Set wsResult = Worksheets.Add
wsResult.Name = "Результаты фильтра"
' Копируем заголовки
wsSource.Rows(1).Copy wsResult.Rows(1)
' Ищем строки с ключевым словом в первом столбце
i = 2
For Each cell In wsSource.Range("A2:A" & wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row)
If InStr(1, cell.Value, keyword, vbTextCompare) > 0 Then
cell.EntireRow.Copy wsResult.Rows(i)
i = i + 1
End If
Next cell
MsgBox "Фильтрация завершена! Найдено " & (i - 2) & " строк.", vbInformation
End Sub
Чтобы запустить макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Измените переменную
keywordна нужное слово. - Запустите макрос нажатием
F5.
⚠️ Внимание: Макрос ищет частичные совпадения. Если нужно точное вхождение слова (например, «Москва», но не «Московский»), замените строку сInStrна:If cell.Value Like " " & keyword & " " Or _cell.Value Like keyword & " *" Or _
cell.Value Like "* " & keyword Or _
cell.Value = keyword Then
FAQ: Ответы на частые вопросы
Можно ли сделать отбор по слову с учётом регистра?
Да, для этого используйте функцию НАЙТИ вместо ПОИСК или в Power Query отметьте опцию С учётом регистра в настройках фильтра. В VBA замените vbTextCompare на vbBinaryCompare.
Почему Excel не находит слово, которое точно есть в таблице?
Причины могут быть следующими:
- 📌 В ячейках есть непечатаемые символы (пробелы, табуляции). Используйте
=ПЕЧСИМВ(A1)для очистки. - 📌 Слово записано с другим регистром (например, «МОСКВА» вместо «Москва»).
- 📌 В настройках фильтра указано точное совпадение (например,
=вместосодержит). - 📌 Данные в столбце имеют текстовый формат, а не общий.
Как отобрать строки, где НЕТ определенного слова?
В Автофильтре выберите Текстовые фильтры → Не содержит.... В формулах используйте:
=ФИЛЬТР(A2:B100; НЕ(ПОИСК("Москва"; A2:A100)); "Нет данных")
В Расширенном фильтре укажите условие <>Москва.
Можно ли сохранить отфильтрованные данные как отдельный файл?
Да, есть три способа:
- Скопируйте отфильтрованные строки (выделите видимые ячейки через
Alt+;) и вставьте в новый файл. - Используйте Power Query: после фильтрации нажмите
Закрыть и загрузить в...и выберитеНовая книга. - В VBA добавьте в конец макроса строку:
wsResult.CopyActiveWorkbook.SaveAs "C:\Отчёт\" & Format(Now(), "yyyy-mm-dd") & ".xlsx"
Как сделать отбор по слову в Google Таблицах?
В Google Sheets работают те же принципы, но с некоторыми отличиями:
- 📌 Для фильтрации используйте
Данные → Создать фильтр(аналог автофильтра). - 📌 Функция
ФИЛЬТРработает аналогично, но поддерживает регулярные выражения напрямую:=FILTER(A2:B; REGEXMATCH(A2:A; "Москва|Питер")) - 📌 Нет Power Query, но есть
Query— мощный язык запросов:=QUERY(A1:B; "SELECT * WHERE A CONTAINS 'Москва'"; 1)