Как найти значение в строке Excel: от простых функций до продвинутых методов

Поиск значений в строках Excel: когда стандартного Ctrl+F недостаточно

Вы когда-нибудь пытались найти конкретное слово или число в ячейке Excel, но стандартный поиск (Ctrl+F) выдавал сотни ненужных результатов? Или нужно было извлечь часть текста из длинной строки, например, артикул товара из описания вида «Товар XYZ-12345 (черный, 50 см)»? В таких случаях обычный поиск бессилен — требуются специализированные функции и техники.

В этой статье мы разберём 7 способов поиска значений в строках Excel — от базовых функций ПОИСК и НАЙТИ до продвинутых инструментов вроде Power Query и регулярных выражений (доступны в Office 365). Вы узнаете, как:

  • 🔍 Найти позицию символа или подстроки в тексте
  • 📌 Извлечь часть строки по разделителю или шаблону
  • 🔄 Заменить фрагменты текста с учётом регистра
  • 📊 Обработать тысячи строк автоматически без формул

Все методы протестированы в Excel 2010–2023 и Office 365, с учётом особенностей русскоязычной и англоязычной версий. Примеры адаптированы для реальных задач: парсинг логов, обработка прайс-листов, очистка баз данных.

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

1. Функции ПОИСК и НАЙТИ: базовый поиск позиции символа

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

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

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

Пример: найдём позицию символа "-" в артикуле "ABC-123-XYZ":

=ПОИСК("-"; "ABC-123-XYZ")  → вернёт 4

Ключевые отличия:

  • 🔹 ПОИСК игнорирует регистр: =ПОИСК("а"; "Аппл") вернёт 1.
  • 🔹 НАЙТИ учитывает регистр: =НАЙТИ("а"; "Аппл") вернёт ошибку #ЗНАЧ!.
  • 🔹 Оба возвращают ошибку, если подстрока не найдена.
=ЕСЛИОШИБКА(ПОИСК("x"; A1); "Не найдено")
-->

2. Извлечение подстрок: ПСТР, ЛЕВСИМВ, ПРАВСИМВ

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

  • 📍 ПСТР(текст; начальная_позиция; количество_символов) — извлекает фрагмент с заданной позиции.
  • 📍 ЛЕВСИМВ(текст; количество_символов) — возвращает символы с начала строки.
  • 📍 ПРАВСИМВ(текст; количество_символов) — возвращает символы с конца строки.

Пример: из строки "Заказ #12345 от 01.01.2023" извлечём номер заказа (5 символов, начиная с 7-й позиции):

=ПСТР("Заказ #12345 от 01.01.2023"; 7; 5)  → вернёт "12345"

Продвинутый приём: комбинация с ПОИСК для динамического извлечения. Например, чтобы получить всё после символа "#":

=ПСТР(A1; ПОИСК("#"; A1)+1; 100)
Почему в последнем примере указано "100"?

Число 100 выбрано произвольно — оно должно быть больше длины извлекаемой подстроки. Excel автоматически обрежет результат до конца строки, поэтому перебор не критичен.

3. Поиск с возвратом значения: ПРОСМОТРХ и ИНДЕКС+ПОИСКПОЗ

Если вам нужно не просто найти подстроку, а вернуть соответствующее значение из другой колонки, используйте:

  • 🔎 ПРОСМОТРХ — для поиска в первой колонке таблицы.
  • 🔎 Комбинация ИНДЕКС+ПОИСКПОЗ — для гибкого поиска в любом столбце.

Пример: в таблице с товарами найдём цену для артикула "XYZ-789":

АртикулНазваниеЦена
ABC-123Монитор15 000 ₽
XYZ-789Клавиатура2 500 ₽
DEF-456Мышь1 200 ₽

Формула для поиска цены:

=ПРОСМОТРХ("XYZ-789"; A2:A4; C2:C4)

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

⚠️ Внимание: ПРОСМОТРХ ищет точное совпадение только в первой колонке диапазона. Для поиска по части строки (например, "XYZ") используйте ИНДЕКС+ПОИСКПОЗ с подстановочными знаками:

=ИНДЕКС(C2:C4; ПОИСКПОЗ("XYZ*"; A2:A4; 0))

4. Поиск с подстановочными знаками: СЧЁТЕСЛИ и СУММЕСЛИ

Если нужно посчитать строки, содержащие определённую подстроку, или просуммировать значения по критерию, используйте:

  • 📊 СЧЁТЕСЛИ(диапазон; критерий) — считает количество ячеек.
  • 📊 СУММЕСЛИ(диапазон; критерий; диапазон_суммирования) — суммирует значения.

Пример: посчитаем, сколько заказов содержат слово "экспресс" в колонке B2:B100:

=СЧЁТЕСЛИ(B2:B100; "экспресс")

Подстановочные знаки:

  • 🌟 * — любое количество символов (например, "*2023" найдёт все строки, оканчивающиеся на "2023").
  • 🌟 ? — один любой символ (например, "??-123" найдёт "AB-123", но не "ABC-123").

Убедиться, что в критерии нет пробелов перед/после подстановочных знаков|Проверить регистр (функции регистронезависимы)|Исключить ошибки в диапазонах (например, #ССЫЛКА!)|Тестировать формулу на небольшом фрагменте данных-->

5. Продвинутый поиск: Power Query и регулярные выражения

Для обработки больших объёмов данных (тысячи строк) или сложных шаблонов (например, извлечение email из текста) используйте Power Query (доступен в Excel 2016+ и Office 365). Алгоритм:

  1. Выделите данные → Данные → Из таблицы/диапазонаPower Query).
  2. Добавьте столбец с формулой (например, для извлечения чисел из строки):
= Text.Select([Column1], {"0".."9"})

где [Column1] — название вашего столбца.

Регулярные выражения (regex) в Excel 365:

С функцией ТЕКСТПОСЛЕ/ТЕКСТДО можно использовать regex-шаблоны. Пример: извлечь все цифры из строки:

=ТЕКСТПОСЛЕ(ТЕКСТДО(A1&"|"; "[0-9]+|"); "|")

Важно: regex в Excel поддерживаются только в бета-версиях Office 365 (канал Insider). В стабильных версиях используйте Power Query или VBA.

6. Поиск с учётом форматирования: НАЙТИ + УСЛОВНОЕ ФОРМАТИРОВАНИЕ

Если нужно визуально выделить ячейки, содержащие искомую подстроку, используйте Условное форматирование:

  1. Выделите диапазон → Главная → Условное форматирование → Создать правило.
  2. Выберите Использовать формулу... и введите:
=НЕОШИБКА(ПОИСК("искомая_подстрока"; A1))
  1. Задайте цвет заполнения или шрифта.

Пример: выделим все ячейки с упоминанием "срочно":

=НЕОШИБКА(ПОИСК("срочно"; A1))

7. Автоматизация поиска: VBA-макросы для сложных задач

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

Sub FindSubstring()

Dim rng As Range, cell As Range

Dim searchTerm As String

Dim resultSheet As Worksheet

Dim i As Integer

searchTerm = InputBox("Введите искомую подстроку:")

Set resultSheet = Worksheets.Add

resultSheet.Name = "Результаты поиска"

i = 1

For Each cell In ActiveSheet.UsedRange

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

resultSheet.Cells(i, 1).Value = cell.Address

resultSheet.Cells(i, 2).Value = cell.Value

i = i + 1

End If

Next cell

End Sub

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

  1. Нажмите Alt+F11Вставка → Модуль.
  2. Вставьте код выше.
  3. Запустите макрос через Выполнить (F5).
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm. При первом запуске может потребоваться разрешить выполнение скриптов в настройках безопасности Excel.

FAQ: Частые вопросы по поиску в строках Excel

Можно ли искать по нескольким критериям одновременно?

Да, используйте комбинацию функций И или ИЛИ с ПОИСК. Пример для поиска строк, содержащих и "заказ" и "2023":

=И(НЕОШИБКА(ПОИСК("заказ"; A1)); НЕОШИБКА(ПОИСК("2023"; A1)))
Как найти ячейки, где текст начинается или заканчивается на определённую подстроку?

Используйте подстановочные знаки:

  • Начинается на "ABC": =СЧЁТЕСЛИ(A:A; "ABC*")
  • Заканчивается на "XYZ": =СЧЁТЕСЛИ(A:A; "*XYZ")
Почему функция НАЙТИ возвращает ошибку #ЗНАЧ!, хотя подстрока есть в ячейке?

Вероятные причины:

  • 🔸 Регистр символов не совпадает (используйте ПОИСК для регистронезависимого поиска).
  • 🔸 В ячейке есть непечатаемые символы (пробелы, табуляции). Очистите данные функцией СЖПРОБЕЛЫ.
  • 🔸 Аргумент начальная_позиция больше длины строки.
Как извлечь все email-адреса из колонки с текстом?

В Excel 365 с поддержкой regex:

=ТЕКСТРАЗДЕЛ(A1; "[^@]+@[^@]+"; ; 1)

В старых версиях используйте Power Query с функцией Text.Select или VBA-макрос.

Можно ли искать значения в строках без формул?

Да, несколько способов:

  • 📌 Ctrl+FПараметры → укажите диапазон поиска и критерии.
  • 📌 Данные → Фильтр → текстовый фильтр "содержит".
  • 📌 Power Query (для сложных преобразований).