Если вам нужно найти все ячейки, содержащие конкретный фрагмент текста (например, "ООО" в названиях компаний или "2026" в датах), Excel предлагает минимум 5 встроенных способов — от элементарного поиска через Ctrl+F до сложных формул с регулярными выражениями. Проблема в том, что стандартный поиск (Найти и заменить) часто игнорирует регистр, не умеет искать по шаблонам и не выделяет результаты в отдельный список. В 80% случаев пользователи допускают ошибку, используя функцию ПОИСК вместо НАЙТИ, что приводит к некорректным результатам при работе с кириллицей или спецсимволами.
В этой статье разберём не только базовые методы (вроде ПОИСКПОЗ с подстановочными знаками), но и продвинутые — например, как через Power Query извлечь все ячейки с частичным совпадением в отдельную таблицу или как использовать ФИЛЬТР в Excel 365 для динамического поиска. Особое внимание уделим типичным ловушкам: почему формула =ЕСЛИ(ПОИСК("текст";A1);"Да";"Нет") возвращает ошибку #ЗНАЧ!, если искомого фрагмента нет, и как это исправить.
1. Быстрый поиск через Ctrl+F: когда хватает стандартных инструментов
Самый простой способ найти часть слова в Excel — использовать горячие клавиши Ctrl+F (или Cmd+F на Mac). Этот метод подходит, если вам нужно:
- 🔍 Визуально проверить, есть ли фрагмент текста в таблице.
- 📍 Перейти к конкретной ячейке с совпадением.
- 🔄 Заменить найденный фрагмент на другой (через
Ctrl+H).
Однако у этого способа есть критические ограничения:
- ❌ Нельзя сохранить результаты поиска в отдельный список.
- ❌ Не работает с формулами (ищет только отображаемые значения).
- ❌ Нет возможности искать с учётом регистра (кроме ручной настройки в
Параметры поиска).
Чтобы включить поиск с учётом регистра:
- Нажмите
Ctrl+F→ кликните на Параметры (или Options в английской версии). - Поставьте галочку напротив Учитывать регистр (Match case).
- Введите искомый фрагмент и нажмите Найти все (Find All).
⚠️ Внимание: Если вы ищете текст в ячейках с формулами,Ctrl+Fпроигнорирует формулу и будет искать только итоговое значение. Например, если в ячейке формула=СЦЕПИТЬ("Привет";" мир"), поиск по слову "Привет" не сработает.
2. Функции ПОИСК и НАЙТИ: ключевые различия и примеры
Для автоматического поиска части слова в Excel используют две основные функции: ПОИСК (SEARCH) и НАЙТИ (FIND). Их часто путают, но они работают по-разному:
| Функция | Учитывает регистр? | Поддерживает подстановочные знаки? | Возвращает при ошибке | Пример использования |
|---|---|---|---|---|
ПОИСК |
❌ Нет | ✅ Да (*, ?) |
#ЗНАЧ! |
=ПОИСК("ооо";A1) |
НАЙТИ |
✅ Да | ❌ Нет | #ЗНАЧ! |
=НАЙТИ("ООО";A1) |
Пример формулы, которая проверяет, содержит ли ячейка A1 слово "отчёт" (без учёта регистра) и возвращает "Да" или "Нет":
=ЕСЛИ(ЕЧИСЛО(ПОИСК("отчёт";A1));"Да";"Нет")
Если нужно учитывать регистр, замените ПОИСК на НАЙТИ:
=ЕСЛИ(ЕЧИСЛО(НАЙТИ("Отчёт";A1));"Да";"Нет")
⚠️ Внимание: ФункцияЕЧИСЛОздесь используется, чтобы избежать ошибки#ЗНАЧ!, которую возвращаютПОИСК/НАЙТИ, если фрагмент не найден. Без неё формула вернёт ошибку вместо "Нет".
=ЕСЛИ(ИЛИ(ЕЧИСЛО(ПОИСК("ООО";A1)); ЕЧИСЛО(ПОИСК("ИП";A1)));"Да";"Нет")-->
3. Поиск с подстановочными знаками: * и ?
Если вам нужно найти часть слова по шаблону (например, все слова, начинающиеся на "Арт" или заканчивающиеся на "2026"), используйте подстановочные знаки:
*— заменяет любое количество символов (в том числе ноль). Пример:"ООО"найдёт "ООО Вега", "Торговый Дом ООО", "ООО123".?— заменяет один любой символ. Пример:"А??а"найдёт "Алла", "Анна", "Ариа".
Подстановочные знаки работают только с функциями, которые их поддерживают: ПОИСК, СЧЁТЕСЛИ, СУММЕСЛИ, ФИЛЬТР (в Excel 365). Примеры:
| Задача | Формула | Пояснение |
|---|---|---|
| Найти ячейки, содержащие "ООО" в любом месте | =СЧЁТЕСЛИ(A:A;"ООО") |
Вернёт количество ячеек в столбце A с совпадением. |
| Найти слова, начинающиеся на "Приказ" и заканчивающиеся на 4 цифры | =ФИЛЬТР(A1:A10;"Приказ*????") |
Работает только в Excel 365 или Excel 2021. |
| Проверить, есть ли в ячейке ровно 5 символов между "К-" и "-М" | =ЕСЛИ(ЕЧИСЛО(ПОИСК("К-?????-М";A1));"Да";"Нет") |
Пример: найдёт "К-АБВГД-М", но не "К-АБВ-М". |
Важный нюанс: если вы ищете сами символы * или ? (например, в артикулах товаров), экранируйте их тильдой ~:
=ПОИСК("~*";A1)
Как искать по шаблону с несколькими условиями?
Если нужно найти ячейки, соответствующие одновременно нескольким шаблонам (например, начинаются на "Договор" и содержат "2026"), используйте формулу массива:
=ЕСЛИ(И(ЕЧИСЛО(ПОИСК("Договор*";A1)); ЕЧИСЛО(ПОИСК("2026";A1)));"Да";"Нет")
В Excel 365 можно упростить через ФИЛЬТР:
=ФИЛЬТР(A1:A10; (НЕОШ(ПОИСК("Договор*";A1:A10)))*(НЕОШ(ПОИСК("2026";A1:A10))))
4. Продвинутый поиск: ПОИСКПОЗ + ДВССЫЛ для динамических диапазонов
Если вам нужно не просто найти часть слова, а получить список всех ячеек с совпадением (например, для дальнейшей обработки), комбинируйте ПОИСКПОЗ с ДВССЫЛ. Этот метод работает во всех версиях Excel и не требует Power Query.
Пример: найдём все ячейки в столбце A, содержащие "ООО", и выведем их адреса в столбец B:
- В ячейку
B1введите:=ЕСЛИОШИБКА(АДРЕС(ПОИСКПОЗ("ООО";A:A;0);1);"")Это вернёт адрес первой ячейки с совпадением (например,
$A$5). - В ячейку
B2введите:=ЕСЛИОШИБКА(АДРЕС(ПОИСКПОЗ("ООО";A:A;0)+СТРОКА(A1);1);"")И протяните формулу вниз. Каждая следующая строка будет возвращать адрес следующего совпадения.
- Чтобы извлечь значения найденных ячеек, используйте
ДВССЫЛ:=ЕСЛИ(B1<>"";ДВССЫЛ(B1);"")
Ограничения метода:
- ⚠️ Работает медленно на больших таблицах (более 10 000 строк).
- ⚠️ Не обновляется автоматически при изменении исходных данных (нужно пересчитывать вручную
F9).
1. Убедитесь, что в столбце нет пустых ячеек (они сбивают ПОИСКПОЗ).
2. Проверьте, что искомый фрагмент точно есть в данных (иначе формула вернёт #Н/Д).
3. Если нужно искать с учётом регистра, замените ПОИСКПОЗ на комбинацию с НАЙТИ и ИНДЕКС.
4. Для динамического обновления используйте Таблицы Excel (Ctrl+T) вместо обычных диапазонов.
-->
5. Power Query: извлечение ячеек с частичным совпадением в отдельную таблицу
Если вам нужно экспортировать все ячейки с частичным совпадением в отдельный файл или таблицу, Power Query — самый мощный инструмент. Он позволяет:
- 🔍 Фильтровать строки по фрагменту текста.
- 📤 Сохранять результаты в новую книгу.
- 🔄 Автоматически обновлять данные при изменении исходника.
Пошаговая инструкция:
- Выделите исходную таблицу → перейдите на вкладку Данные → Из таблицы/диапазона (Power Query откроется в отдельном окне).
- В Power Query выберите столбец, по которому будете искать → Домашняя → Фильтр по тексту → Содержит....
- Введите искомый фрагмент (например, "ООО") → ОК.
- Нажмите Закрыть и загрузить → выберите Новый лист. Готово: в новой таблице останутся только строки с совпадением.
Преимущества Power Query перед формулами:
- ✅ Работает с миллионами строк без тормозов.
- ✅ Можно комбинировать несколько условий (например, "содержит 'ООО' И не содержит 'ЗАО'").
- ✅ Сохраняет связь с исходными данными (обновляется по кнопке Обновить).
⚠️ Внимание: В Excel 2016 и старше Power Query называется Get & Transform. Если у вас нет этой вкладки, установите надстройку Power Query через Файл → Параметры → Надстройки → Управление: Надстройки COM.
6. Функция ФИЛЬТР в Excel 365: динамический поиск без VBA
В Excel 365 и Excel 2021 появилась функция ФИЛЬТР, которая упрощает поиск части слова. Она возвращает динамический массив — т.е. автоматически обновляемый список ячеек с совпадением.
Пример: найдём все ячейки в диапазоне A1:A100, содержащие "отчёт":
=ФИЛЬТР(A1:A100; ЕЧИСЛО(ПОИСК("отчёт";A1:A100)))
Чтобы сделать поиск регистрозависимым, замените ПОИСК на НАЙТИ:
=ФИЛЬТР(A1:A100; ЕЧИСЛО(НАЙТИ("Отчёт";A1:A100)))
Продвинутый пример: поиск по нескольким фрагментам (например, "отчёт" или "акт") с выводом в отдельные столбцы:
=ФИЛЬТР(A1:C100; (ЕЧИСЛО(ПОИСК("отчёт";A1:A100))) + (ЕЧИСЛО(ПОИСК("акт";B1:B100))))
Ограничения ФИЛЬТР:
- ❌ Работает только в Excel 365/2021 (в старых версиях вернёт ошибку
#ИМЯ?). - ❌ Не поддерживает подстановочные знаки напрямую (нужно комбинировать с
ПОИСК).
7. Поиск с учётом ошибок: ЕСЛИОШИБКА + ПОИСК
Одна из самых распространённых ошибок при поиске части слова — игнорирование случаев, когда искомый фрагмент отсутствует. Если просто использовать =ПОИСК("текст";A1), при отсутствии совпадения формула вернёт #ЗНАЧ!, что может сломать дальнейшие вычисления.
Решения:
- Вернуть 0 или пустую строку:
=ЕСЛИОШИБКА(ПОИСК("текст";A1);0) - Вернуть "Да"/"Нет":
=ЕСЛИ(ЕЧИСЛО(ПОИСК("текст";A1));"Да";"Нет") - Игнорировать ошибки в сложных формулах:
=ЕСЛИОШИБКА(ДВССЫЛ(АДРЕС(ПОИСКПОЗ("текст";A:A;0);1));"")
Пример для поиска с несколькими условиями (без ошибок):
=ЕСЛИ(
И(
ЕЧИСЛО(ПОИСК("ООО";A1)),
ЕЧИСЛО(ПОИСК("2026";A1))
);
"Подходит";
"Не подходит"
)
8. Автоматизация: макросы для поиска части слова
Если вам нужно регулярно искать части слов в больших таблицах, имеет смысл записать макрос. Например, этот код найдёт все ячейки с фрагментом "ООО" и выделит их жёлтым:
Sub FindAndHighlight()
Dim searchText As String
Dim cell As Range
searchText = "ООО" ' Искомый фрагмент
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Value, searchText, vbTextCompare) > 0 Then
cell.Interior.Color = RGB(255, 255, 0) ' Жёлтый цвет
End If
Next cell
End Sub
Чтобы адаптировать макрос под свои нужды:
- 🔹 Замените
"ООО"на свой фрагмент. - 🔹 Чтобы искать с учётом регистра, замените
vbTextCompareнаvbBinaryCompare. - 🔹 Чтобы скопировать найденные ячейки в новый лист, добавьте строку:
cell.Copy Destination:=Sheets("Результаты").Range("A" & Rows.Count).End(xlUp).Offset(1)
⚠️ Внимание: Макросы работают только если включена поддержка VBA (проверьте в Файл → Параметры → Настройка ленты → Разработчик). В Excel Online макросы не поддерживаются.
Как запустить макрос в Excel?
Если вы никогда не работали с макросами:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert → Module). - Закройте редактор и вернитесь в Excel.
- Нажмите
Alt+F8, выберите макросFindAndHighlight→ Выполнить.
FAQ: Ответы на частые вопросы
Как найти часть слова в Excel и скопировать только эти ячейки?
Используйте Power Query (инструкция в разделе 5) или макрос из раздела 8. Альтернатива для небольших таблиц:
- Добавьте вспомогательный столбец с формулой
=ЕСЛИ(ЕЧИСЛО(ПОИСК("фрагмент";A1));A1;""). - Скопируйте видимые ячейки (выделите столбец →
F5→ Выделить видимые →Ctrl+C).
Почему ПОИСК не находит кириллицу?
Проблема возникает, если:
- В ячейке не текст, а число (например, "123" хранится как число, а не как текст). Решение: преобразуйте в текст через
=ТЕКСТ(A1;"@"). - Используется неправильная кодировка (редко в современных версиях). Попробуйте сохранить файл в формате
.xlsx(не.csv). - В формуле опечатка (например, английские кавычки
" "вместо русских" ").
Как найти ячейки, которые НЕ содержат определенный фрагмент?
Используйте ПОИСК с отрицанием:
=ЕСЛИ(НЕ(ЕЧИСЛО(ПОИСК("фрагмент";A1)));"Нет совпадения";"")
Или в Power Query примените фильтр "Не содержит...".
Можно ли искать часть слова с учётом транслита (например, найти "moscow" в "Москва")?
Стандартными функциями — нет. Решения:
- Используйте VBA-функцию для транслитерации (пример кода есть на Stack Overflow).
- Создайте вспомогательный столбец с транслитом через Power Query (надстройка Transliterate).
- Для одноразовой задачи воспользуйтесь онлайн-конвертерами транслита и вставьте результат в Excel.
Как найти часть слова в защищённой ячейке?
Если ячейка защищена от изменений, но не от просмотра:
- Используйте
ПОИСК/НАЙТИ— они работают и с защищёнными ячейками. - Для копирования данных временно снимите защист листа (
Рецензирование → Снять защиту листа).
Если ячейка скрыта и защищена, обратитесь к администратору файла.