Как в Excel сделать поиск по нескольким словам: от простого к сложному

Почему стандартный поиск в Excel не находит несколько слов сразу

Вы когда-нибудь пытались найти в Excel строки, содержащие сразу два-три ключевых слова — например, "отчёт" и "2026", "Москва" и "доставка"? Стандартная функция Ctrl+F ищет только одно слово за раз, игнорируя логику "И". Это создаёт массу неудобств: приходится вручную просматривать сотни строк или делать несколько поисков подряд, рискуя пропустить важные данные.

Проблема усугубляется, когда нужно найти комбинации слов в разных колонках (например, "Иванов" в столбце ФИО и "менеджер" в столбце Должность). Здесь уже не поможет даже расширенный фильтр — требуются специальные формулы или инструменты вроде Power Query. В этой статье мы разберём 5 рабочих методов, от простых до продвинутых, с учётом разных версий Excel (включая Excel 365 и Excel 2019).

Важно: если вы работаете с большими таблицами (10 000+ строк), некоторые методы могут тормозить. В таком случае мы отдельно укажем оптимальные решения для объёмных данных.

Метод 1: Функция ПОИСК + условное форматирование (для одного столбца)

Самый быстрый способ выделить строки, содержащие все указанные слова в одном столбце — комбинация функций ПОИСК (или NA в английской версии) и условного форматирования. Этот метод работает даже в Excel 2010 и не требует знания сложных формул.

Допустим, у вас есть столбец A с текстом, и вы хотите найти строки, где одновременно есть слова "контракт" и "оплата". Создайте вспомогательный столбец B с формулой:

=ЕСЛИ(И(НЕ(ЕОШ(ПОИСК("контракт";A1))); НЕ(ЕОШ(ПОИСК("оплата";A1)))); "Да"; "")

Затем примените условное форматирование к столбцу A:

  1. Выделите диапазон (например, A1:A100).
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу: =$B1="Да".
  5. Задайте цвет заливки (например, жёлтый) и нажмите ОК.

Теперь все строки, содержащие оба слова, будут подсвечены. Минус метода: требуется вспомогательный столбец, а формула чувствительна к регистру (если нужно игнорировать регистр, замените ПОИСК на ПОИСКБ).

Метод 2: Фильтр по нескольким критериям (для разных столбцов)

Если слова, которые вы ищете, находятся в разных колонках, стандартный фильтр Excel справится с задачей за 3 клика. Например, вам нужно найти все строки, где в столбце B указан "Петров", а в столбце D — "менеджер".

Инструкция:

  • 📌 Выделите любую ячейку в таблице и нажмите Данные → Фильтр (или Ctrl+Shift+L).
  • 🔍 Откройте выпадающий список в столбце B, снимите галочку с (Выделить всё) и оставьте только "Петров". Нажмите ОК.
  • 🔍 Повторите шаг 2 для столбца D, оставив только "менеджер".

В результате останутся только строки, соответствующие обеим условиям. Этот метод не требует формул и работает во всех версиях Excel, но имеет ограничение: нельзя искать частичные совпадения (только точные значения из списка).

Как сохранить отфильтрованные данные в новую таблицу?

1. Выделите видимые строки (нажмите Ctrl+A, затем Alt+;).

2. Скопируйте их (Ctrl+C) и вставьте на новый лист (Ctrl+V).

3. Удалите фильтр, чтобы вернуть исходные данные.

Метод 3: Формула массива с ИЛИ/И (для опытных пользователей)

Когда нужно искать комбинации слов с логикой "ИЛИ" (хотя бы одно из слов) или "И" (все слова сразу) в нескольких столбцах, на помощь приходят формулы массива. Они сложнее в освоении, но дают максимальную гибкость.

Пример 1: Найти строки, где есть "монитор" ИЛИ "клавиатура" в столбцах A, B или C.

=ЕСЛИ(ИЛИ(НЕ(ЕОШ(ПОИСК("монитор";A1:C1))); НЕ(ЕОШ(ПОИСК("клавиатура";A1:C1)))); "Есть"; "")

Пример 2: Найти строки, где есть "монитор" И "2026" в любых столбцах.

=ЕСЛИ(И(НЕ(ЕОШ(ПОИСК("монитор";A1:C1))); НЕ(ЕОШ(ПОИСК("2026";A1:C1)))); "Есть"; "")

Важно: в Excel 365 и Excel 2019 формулы массива вводятся как обычно (просто нажмите Enter). В старых версиях (Excel 2016 и ниже) после ввода формулы нажмите Ctrl+Shift+Enter, чтобы она заключилась в фигурные скобки {...}.

📊 Какой метод поиска вы используете чаще?
Стандартный фильтр
Функции ПОИСК/НАЙТИ
Условное форматирование
Power Query
Не знаю, что это

Метод 4: Power Query для сложных запросов (100 000+ строк)

Если ваша таблица содержит десятки тысяч строк, обычные формулы будут тормозить. Здесь незаменим инструмент Power Query (доступен в Excel 2016 и новее). Он позволяет:

  • 🔄 Искать по нескольким словам в разных столбцах без формул.
  • 📊 Объединять данные из нескольких файлов перед поиском.
  • ⚡ Обрабатывать миллионы строк за секунды.

Пример: найдём все строки, где в столбце Product есть "laptop", а в столбце Status — "in stock".

  1. Выделите таблицу и нажмите Данные → Из таблицы/диапазонаExcel 365 это Данные → Получить данные → Из таблицы/диапазона).
  2. В открывшемся редакторе Power Query выделите столбец Product, нажмите Главная → Фильтр → Текстовые фильтры → Содержит... и введите "laptop".
  3. Повторите шаг 2 для столбца Status с фильтром "in stock".
  4. Нажмите Главная → Закрыть и загрузить.

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

Убедитесь, что таблица имеет заголовки

Проверьте отсутствие пустых строк в диапазоне

Закройте другие программы, работающие с файлом

Сохраните резервную копию данных-->

Метод 5: VBA-скрипт для автоматического поиска (для повторяющихся задач)

Если вам регулярно приходится искать одни и те же комбинации слов, имеет смысл автоматизировать процесс с помощью VBA. Ниже приведён скрипт, который выделит цветом все строки, содержащие все указанные слова в выбранном диапазоне.

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль: Вставка → Модуль.
  3. Скопируйте код ниже и закройте редактор.
  4. Вернитесь в Excel, нажмите Alt+F8, выберите макрос SearchMultipleWords и запустите его.
Sub SearchMultipleWords()

Dim rng As Range, cell As Range

Dim searchWords As Variant, word As Variant

Dim foundAll As Boolean

Dim colorIndex As Integer

' Укажите диапазон для поиска (например, A1:A100)

Set rng = Application.InputBox("Выделите диапазон для поиска:", Type:=8)

' Укажите слова для поиска через запятую (например, "отчёт,2026")

searchWords = Split(Application.InputBox("Введите слова через запятую:"), ",")

' Цвет для выделения (например, жёлтый = 6)

colorIndex = 6

For Each cell In rng

foundAll = True

For Each word In searchWords

If InStr(1, cell.Value, Trim(word), vbTextCompare) = 0 Then

foundAll = False

Exit For

End If

Next word

If foundAll Then cell.Interior.ColorIndex = colorIndex

Next cell

End Sub

Скрипт запрашивает диапазон и слова для поиска, затем выделяет цветом все ячейки, содержащие все введённые слова (регистр не учитывается). Для поиска в нескольких столбцах выделите диапазон типа A1:C100.

Сравнение методов: какой выбрать для вашей задачи

Чтобы помочь вам определиться, мы составили таблицу с плюсами и минусами каждого метода в зависимости от объёма данных и сложности задачи.

Метод Подходит для Плюсы Минусы Сложность
Условное форматирование + ПОИСК 1 столбец, до 10 000 строк Простота, визуальное выделение Требует вспомогательный столбец
Стандартный фильтр Несколько столбцов, точные совпадения Без формул, быстро Не ищет частичные совпадения
Формулы массива Сложная логика ("И"/"ИЛИ") Гибкость, работает без Power Query Тормозит на больших данных ⭐⭐⭐
Power Query 100 000+ строк, сложные фильтры Быстро, не грузит Excel Требует изучение интерфейса ⭐⭐
VBA Повторяющиеся задачи Автоматизация, гибкость Риск ошибок в коде ⭐⭐⭐⭐

Для большинства пользователей оптимальным решением будет комбинация стандартного фильтра (для простых задач) и Power Query (для больших таблиц). Формулы массива и VBA стоит осваивать, если вы часто работаете с данными и нуждаетесь в автоматизации.

Частые ошибки и как их избежать

Даже опытные пользователи Excel иногда сталкиваются с проблемами при поиске по нескольким словам. Вот топ-3 ошибки и способы их решения:

⚠️ Внимание: Если функция ПОИСК возвращает ошибку #ЗНАЧ!, проверьте регистр букв. Используйте ПОИСКБ для поиска без учёта регистра или преобразуйте текст в нижний регистр с помощью НИЖНРЕГ.

Ошибка 1: Формула не находит слова, хотя они есть в ячейке.

Причина: пробелы или непечатаемые символы (например, переносы строк). Решение: очистите данные функцией СЖПРОБЕЛЫ или замените проблемные символы:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; СИМВОЛ(10); " "); СИМВОЛ(13); " ")

Ошибка 2: Power Query не применяет фильтры.

Причина: данные не распознаны как таблица. Решение: перед загрузкой в Power Query преобразуйте диапазон в таблицу (Ctrl+T).

Ошибка 3: VBA-скрипт выделяет не все строки.

Причина: в словах для поиска есть лишние пробелы. Решение: используйте функцию Trim в коде, как в примере выше.

⚠️ Внимание: При работе с кириллицей в VBA укажите кодировку vbTextCompare (как в примере), иначе поиск может не срабатывать для букв "ё", "й" и т.д.

FAQ: Ответы на популярные вопросы

Можно ли искать слова с учётом расстояния между ними (например, "отчёт за 2026", но не "отчёт 2023 и 2026")?

Да, для этого используйте регулярные выражения в Power Query или VBA. Пример регулярки для поиска "отчёт за 2026" (без лишних слов между ними): отчёт.{1,5}2026, где {1,5} — допустимое количество символов между словами.

В Power Query добавьте пользовательский столбец с формулой:

= Text.Select([YourColumn], {"отчёт.*2026"})
Как искать слова в ячейках с формулами (а не только значения)?

Стандартный поиск (Ctrl+F) ищет только отображаемые значения. Чтобы найти текст в формулах:

  1. Нажмите Формулы → Зависимости формул → Показать формулы (Ctrl+`).
  2. Теперь используйте Ctrl+F для поиска по тексту формул.
  3. После поиска верните отображение значений той же кнопкой.

Для автоматизации можно использовать VBA-скрипт, который проверяет свойство .Formula у ячеек.

Почему функция НАЙТИ (FIND) не работает, а ПОИСК (SEARCH) работает?

Функция НАЙТИ (FIND) чувствительна к регистру и не поддерживает подстановочные знаки (, ?). ПОИСК (SEARCH) игнорирует регистр и позволяет использовать для поиска части слов. Например:

  • =НАЙТИ("Отчёт";A1) — не найдёт "отчёт" с маленькой буквы.
  • =ПОИСК("отч*";A1) — найдёт "отчёт", "отчёты", "Отчётность" и т.д.
Как сохранить результаты поиска в отдельный файл?

Способы в зависимости от метода:

  • Фильтр/Power Query: Скопируйте видимые строки (Alt+;) и вставьте в новый файл.
  • Условное форматирование: Отсортируйте данные по вспомогательному столбцу, затем скопируйте нужные строки.
  • VBA: Модифицируйте скрипт, чтобы он копировал строки на новый лист:
' Добавьте в конец макроса:

Sheets.Add

ActiveSheet.Name = "Результаты"

rng.SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Результаты").Range("A1")

Есть ли разница между поиском в Excel и Google Sheets?

Да, в Google Sheets:

  • Функция REGEXMATCH заменяет ПОИСК и поддерживает регулярные выражения.
  • Фильтры применяются автоматически ко всем данным (нет кнопки "ОК").
  • Для Power Query используется надстройка Google Apps Script.

Пример формулы для поиска двух слов в Google Sheets:

=ARRAYFORMULA(IF(REGEXMATCH(A1:A100; "слово1") * REGEXMATCH(A1:A100; "слово2"); "Да"; ""))