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

Почему стандартный поиск в Excel не всегда работает

Вы когда-нибудь пытались найти в Microsoft Excel ячейки, содержащие только часть искомого слова, но программа упорно выдавала "Ничего не найдено"? Это типичная проблема, с которой сталкиваются пользователи, не знающие о нюансах поиска по фрагментам. Дело в том, что по умолчанию Excel ищет точные совпадения — если вы ввели "отчет", а в ячейке написано "ежеквартальный отчет по продажам", программа просто проигнорирует эту строку.

Еще хуже ситуация обстоит с данными, где фрагменты текста перемешаны с цифрами, символами или пробелами в неожиданных местах. Например, поиск по "А100" не найдет "Заказ А100-2026", если не использовать специальные подстановочные знаки. А в больших таблицах с тысячами строк ручной просмотр каждого значения превращается в настоящую пытку.

К счастью, в Excel есть как минимум 7 различных способов искать по части слова — от элементарных горячих клавиш до продвинутых формул с регулярными выражениями. Давайте разберем их по порядку, начиная с самых простых.

📊 Как часто вы используете поиск по фрагментам в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда не пробовал

Способ 1: Подстановочные знаки * и ? в стандартном поиске

Самый быстрый метод, который работает во всех версиях Excel — использование подстановочных знаков в окне поиска (Ctrl + F). Звездочка * заменяет любое количество символов (включая ноль), а вопросительный знак ? — ровно один символ.

Примеры использования:

  • 🔍 отчет* — найдет "отчет", "отчеты", "отчетность", "отчетный"
  • 🔍 А100 — найдет "Заказ А100", "А100-2026", "Код: А100"
  • 🔍 с??т — найдет "счет", но не найдет "счета" или "расчет"

Важный нюанс: по умолчанию Excel различает регистр. Чтобы искать без учета заглавных/строчных букв, нажмите кнопку Параметры в окне поиска и снимите галочку с пункта Учитывать регистр.

Способ 2: Фильтр по части текста (без формул)

Когда нужно не просто найти, а отфильтровать строки по фрагменту, используйте встроенный фильтр:

  1. Выделите заголовок столбца с данными
  2. Нажмите Данные → Фильтр (или Ctrl + Shift + L)
  3. Кликните по стрелке фильтра в заголовке столбца
  4. Выберите Текстовые фильтры → Содержит...
  5. Введите искомый фрагмент и нажмите ОК

Этот метод удобен для быстрого анализа данных, когда нужно увидеть только релевантные строки. Например, если у вас список заказов, можно мгновенно отобразить только те, где в поле "Комментарий" упоминается "срочно".

Убедиться, что в столбце нет объединенных ячеек|

Проверить наличие скрытых символов (пробелов, переносов)|

Снять предыдущие фильтры (Данные → Очистить)|

Сохранить исходные данные на отдельном листе-->

Тип фильтра Пример условия Что найдет Что проигнорирует
Содержит отч "отчет", "отчетность", "неотложный" "дочь", "ночь"
Начинается с А1 "А100", "А1-2026" "Заказ А100", "Код: А1"
Заканчивается на 2026 "Отчет-2026", "Заказ#2026" "2026-01-15", "Год: 2026"

Способ 3: Функции ПОИСК и НАЙТИ для точного анализа

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

=ПОИСК(искомый_текст; текст_для_поиска; [нач_позиция])

=НАЙТИ(искомый_текст; текст_для_поиска; [нач_позиция])

Примеры использования:

  • 📌 =ПОИСК("А100"; A2) — вернет позицию фрагмента "А100" в ячейке A2 (или ошибку #ЗНАЧ!, если не найдет)
  • 📌 =ЕСЛИ(ПОИСК("срочн"; B2); "Да"; "Нет") — проверит, содержится ли "срочн" в ячейке B2
  • 📌 =НАЙТИ("Отчет"; A2)=1 — вернет ИСТИНА, если текст в A2 начинается с "Отчет"

Эти функции часто используют в комбинации с ЕСЛИ, И/ИЛИ для создания сложных условий. Например, чтобы выделить все заказы, где в комментарии упоминается "срочно" ИЛИ "приоритет":

=ЕСЛИ(ИЛИ(ПОИСК("срочн"; D2); ПОИСК("приорит"; D2)); "Внимание!"; "")
Чем отличаются ПОИСК и НАЙТИ?

Функция ПОИСК игнорирует регистр букв и позволяет использовать подстановочный знак ? для любого символа. Функция НАЙТИ учитывает регистр и не поддерживает подстановочные знаки, но работает быстрее на больших текстах.

Способ 4: Продвинутый поиск с регулярными выражениями (Power Query)

Для пользователей Excel 2016 и новее доступен мощный инструмент Power Query, который поддерживает регулярные выражения (regex). Это позволяет искать по сложным шаблонам, например:

  • 🔢 Найти все email-адреса: [A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}
  • 🔢 Найти телефонные номера: \+?\d{1,3}[-.\s]?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
  • 🔢 Найти коды заказов вида "АХХХ-ХХ": [А-Я]\d{3}-\d{2}

Инструкция по использованию:

  1. Выделите ваши данные и нажмите Данные → Из таблицы/диапазона
  2. В открывшемся Power Query выберите столбец для фильтрации
  3. Нажмите Главная → Фильтр по условию → Продвинутый фильтр
  4. В поле фильтра введите регулярное выражение с префиксом Regex., например: Regex.Matches(Text.From([YourColumn]), "ваш_шаблон")

Важно: регулярные выражения в Power Query чувствительны к регистру по умолчанию. Чтобы сделать поиск нечувствительным, добавьте флаг (?i) в начало шаблона, например: (?i)отчет.

Способ 5: Поиск по части слова в сводных таблицах

Если вам нужно проанализировать большие массивы данных, где важно не только найти, но и сгруппировать информацию по фрагментам текста, используйте сводные таблицы с вычисляемыми полями. Например, можно создать категорию "Тип заказа" на основе фрагментов в поле "Описание":

  1. Создайте сводную таблицу (Вставка → Сводная таблица)
  2. Добавьте исходное текстовое поле в область "Строки"
  3. Нажмите Анализ → Поля, элементы и наборы → Вычисляемое поле
  4. Создайте формулу типа:
    =ЕСЛИ(ПОИСК("срочн"; Описание); "Срочные";
    

    ЕСЛИ(ПОИСК("стандарт"; Описание); "Стандартные"; "Другие"))

  5. Добавьте вычисляемое поле в область "Значения"

Это позволит автоматически классифицировать тысячи строк по ключевым словам, даже если они спрятаны внутри длинных текстовых описаний.

⚠️ Внимание: Вычисляемые поля в сводных таблицах не обновляются автоматически при изменении исходных данных. После редактирования таблицы нужно вручную нажать Анализ → Обновить.

Способ 6: Поиск с помощью VBA-макросов

Для автоматизации повторяющихся задач можно написать простой VBA-макрос, который будет искать фрагменты по заданным критериям. Например, этот код найдет все ячейки с упоминанием "отчет" и выделит их желтым цветом:

Sub FindAndHighlight()

Dim rng As Range, cell As Range

Dim searchTerm As String

searchTerm = InputBox("Введите текст для поиска:", "Поиск по фрагменту")

If searchTerm = "" Then Exit Sub

Set rng = ActiveSheet.UsedRange

For Each cell In rng

If InStr(1, cell.Value, searchTerm, vbTextCompare) > 0 Then

cell.Interior.Color = RGB(255, 255, 0) ' желтый цвет

End If

Next cell

End Sub

Чтобы использовать этот макрос:

  1. Нажмите Alt + F11 для открытия редактора VBA
  2. Вставьте код в новый модуль (Insert → Module)
  3. Запустите макрос нажатием F5 или через Разработчик → Макросы

Преимущество VBA в том, что можно создавать сложные сценарии поиска с дополнительными действиями (копирование данных, отправка email, генерация отчетов). Например, макрос может автоматически собирать все строки с определенным фрагментом в отдельный лист.

Способ 7: Поиск по части слова в Power Pivot (DAX)

Для работы с большими данными (миллионы строк) подходит инструмент Power Pivot, где можно использовать функции DAX для поиска по фрагментам. Например, функция CONTAINSSTRING проверяет наличие подстроки:

=FILTER(

Table1,

CONTAINSSTRING(Table1[Column1], "искомый текст")

)

А функция SEARCH возвращает позицию фрагмента (аналог ПОИСК в обычном Excel):

=SEARCH("отчет", Table1[Description], 1, -1) > 0

Где последний параметр -1 указывает на нечувствительность к регистру.

Power Pivot особенно полезен, когда нужно:

  • 📊 Анализировать данные из нескольких таблиц одновременно
  • 📊 Создавать сложные фильтры по нескольким фрагментам
  • 📊 Работать с данными объемом более 1 млн строк
⚠️ Внимание: Функции DAX в Power Pivot не поддерживают подстановочные знаки (* и ?) напрямую. Для подобной логики нужно использовать комбинации функций или регулярные выражения в Power Query.

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

Можно ли искать по части слова в защищенном листе Excel?

Да, но с ограничениями. Стандартный поиск (Ctrl+F) будет работать, однако:

  • Нельзя использовать фильтры, если защищены ячейки с данными
  • Макросы не смогут изменять защищенные ячейки (например, выделять цветом)
  • Функции ПОИСК/НАЙТИ будут работать, но результаты нельзя записать в защищенные ячейки

Решение: временно снять защиту (Рецензирование → Снять защиту листа), выполнить поиск, затем снова защитить лист.

Почему Excel не находит слово, которое точно есть в таблице?

Причины могут быть следующими:

  1. Скрытые символы: в ячейке могут быть непечатаемые символы (пробелы, табуляции, переносы строк). Проверьте с помощью функции =КОДСИМВ(ЛЕВСИМВ(A1)).
  2. Разный регистр: если включен параметр "Учитывать регистр", "Отчет" и "отчет" будут считаться разными словами.
  3. Объединенные ячейки: поиск может игнорировать текст в объединенных ячейках.
  4. Формат ячейки: если ячейка отформатирована как "Текст", а вы ищете число (или наоборот), поиск может не сработать.

Решение: используйте функцию =ПОИСК(искомый_текст;ПЕЧСИМВ(A1)), чтобы игнорировать форматирование.

Как искать по части слова в Excel Online?

В веб-версии Excel доступны следующие методы:

  • 🔍 Стандартный поиск (Ctrl+F) с подстановочными знаками * и ?
  • 🔍 Фильтр по условию "Содержит"
  • 🔍 Функции ПОИСК и НАЙТИ (но без VBA и Power Query)

Ограничения Excel Online:

  • Нет поддержки регулярных выражений
  • Невозможно создать вычисляемые поля в сводных таблицах
  • Макросы VBA не работают
Можно ли искать по части слова в формулах массива?

Да, и это один из самых мощных методов. Например, формула массива для поиска всех ячеек, содержащих "отчет" или "report":

=ЕСЛИОШИБКА(ИНДЕКС(A:A;ПОИСКПОЗ(ИСТИНА;(ПОИСК({"отчет";"report"};A:A))>0;0));"")

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

Для поиска всех совпадений в столбце используйте:

=ТЕКСТСОЕД("; ";ИСТИНА;ЕСЛИ(ПОИСК("отчет";A:A);A:A;""))
Как сохранить результаты поиска по фрагменту в отдельный файл?

Есть несколько способов:

  1. Копирование отфильтрованных данных:
    • Примените фильтр "Содержит"
    • Скопируйте видимые ячейки (Alt+; для выбора только видимых)
    • Вставьте в новый файл
  • Power Query:
    • Загрузите данные в Power Query
    • Примените фильтр по фрагменту
    • Экспортируйте результаты в новый файл (Главная → Закрыть и загрузить в...)
    • VBA-макрос:
      Sub ExportFilteredData()
      

      Dim wsSource As Worksheet, wsNew As Worksheet

      Dim rng As Range, cell As Range, i As Long

      Dim searchTerm As String, newWorkbook As Workbook

      searchTerm = InputBox("Введите текст для поиска:")

      If searchTerm = "" Then Exit Sub

      Set wsSource = ActiveSheet

      Set newWorkbook = Workbooks.Add

      Set wsNew = newWorkbook.Sheets(1)

      i = 1

      For Each cell In wsSource.UsedRange

      If InStr(1, cell.Value, searchTerm, vbTextCompare) > 0 Then

      wsNew.Cells(i, 1).Value = cell.Value

      i = i + 1

      End If

      Next cell

      newWorkbook.SaveAs "Результаты поиска по_" & searchTerm & ".xlsx"

      End Sub