РЕГИЗВЛЕЧЬ (REGEXEXTRACT) в Excel: извлечь текст по шаблону
Возможности !SEMTools
↑ Навигация по задачам в Excel и возможностям надстройки !SEMTools ↑

Функция РЕГИЗВЛЕЧЬ в Excel вытаскивает из текста фрагмент, подходящий под регулярное выражение: =РЕГИЗВЛЕЧЬ(A2;"\d+") вернёт первое число из ячейки, =РЕГИЗВЛЕЧЬ(A2;"[\w.+-]+@[\w-]+\.\w+") — e-mail. Третий аргумент задаёт, что вернуть: первое совпадение (0), все совпадения массивом (1) или группы в скобках (2). Если совпадения нет, функция возвращает #Н/Д, а результат всегда текстовый — для чисел добавьте двойной минус. Функция есть в Excel для Microsoft 365, на английском она называется REGEXEXTRACT.

Раздел функцийТекстовые
Название на английскомREGEXEXTRACT
Версии ExcelExcel для Microsoft 365 (Windows и Mac)
ВолатильностьНе волатильная
Похожие функцииРЕГТЕСТ, РЕГЗАМЕНИТЬ, ПСТР, ПОИСК

Синтаксис функции РЕГИЗВЛЕЧЬ

=РЕГИЗВЛЕЧЬ(текст;шаблон;[режим_возврата];[учет_регистра])
  • текст — ячейка или строка, из которой извлекаем;
  • шаблон — регулярное выражение в кавычках;
  • режим_возврата — необязательный: 0 (по умолчанию) — первое совпадение, 1 — все совпадения массивом, 2 — группы в скобках из первого совпадения;
  • учет_регистра — необязательный: 0 (по умолчанию) — регистр учитывается, 1 — не учитывается.

Шаблоны пишутся в синтаксисе PCRE2, как и в РЕГТЕСТ и РЕГЗАМЕНИТЬ. Обозначения \d, \s, квантификаторы и группы разобраны в статье про регулярные выражения в Excel.

Три режима возврата

Режим определяет, сколько значений вернёт формула. В режимах 1 и 2 результат — массив, он разливается в соседние ячейки, поэтому справа от формулы должно быть свободно.

Режимы 0, 1 и 2
C3=РЕГИЗВЛЕЧЬ(A3;"\d+";1)
ABCDEFG
1ТекстРежимРезультат
2Заказ 1024 от 05.10.2026, сумма 35000 — первое1024=РЕГИЗВЛЕЧЬ(A2;"\d+")
3Заказ 1024 от 05.10.2026, сумма 35001 — все1024=РЕГИЗВЛЕЧЬ(A3;"\d+";1)051020263500
4Заказ 1024 от 05.10.2026, сумма 35002 — группы05=РЕГИЗВЛЕЧЬ(A4;"(\d{2})\.(\d{2})\.(\d{4})";2)102026

Режим 1 возвращает все числа: 1024, 05, 10, 2026 и 3500 — массив разлился вправо (в Excel все совпадения разливаются в строку). Режим 2 разбирает первую найденную дату на день, месяц и год — по одной ячейке на каждую пару скобок.

В английском Excel: =REGEXEXTRACT(A3,"\d+",1)

Извлечь число, e-mail, телефон из текста

Самые частые задачи — достать из строки число, контакт или код. Результат РЕГИЗВЛЕЧЬ — всегда текст: чтобы с числом можно было считать, поставьте перед формулой два минуса, а для дробей с запятой в русском Excel это сработает автоматически.

Число, e-mail, телефон, артикул
C2=--РЕГИЗВЛЕЧЬ(A2;"\d+(?:,\d+)?")
ABC
1ТекстЧто извлекаемРезультат
2Вес 2,5 кг, цена 1 290 ₽число с дробью2,5=--РЕГИЗВЛЕЧЬ(A2;"\d+(?:,\d+)?")
3Пишите: sales@shop.ru или звонитеe-mailsales@shop.ru=РЕГИЗВЛЕЧЬ(A3;"[\w.+-]+@[\w-]+\.\w+")
4Тел. +7 (916) 123-45-67, Аннателефон+7 (916) 123-45-67=РЕГИЗВЛЕЧЬ(A4;"\+7[\d ()-]{10,}\d")
5Артикул: AB-20391, остаток 4артикул по маскеAB-20391=РЕГИЗВЛЕЧЬ(A5;"[A-Z]{2}-\d+")

В первой строке двойной минус превращает текст «2,5» в число 2,5. Формула возвращает первое найденное число — 2,5; цену «1 290» с пробелом внутри такой шаблон разбил бы на 1 и 290. Шаблон телефона берёт +7 и дальше цифры, пробелы, скобки и дефисы.

В английском Excel: =--REGEXEXTRACT(A2,"\d+(?:,\d+)?")

Текст до и после метки: ретроспективная проверка

Часто нужно взять значение после слова-метки: «ИНН 7707083893», «код: 4521». В PCRE2 есть ретроспективная проверка (?<=…): она требует, чтобы перед фрагментом стояла метка, но саму метку в результат не включает. Опережающая проверка (?=…) делает то же для текста после фрагмента. Другой способ — режим 2 с группой.

Значение после метки
C2=РЕГИЗВЛЕЧЬ(A2;"(?<=ИНН )\d+")
ABC
1ТекстШаблонРезультат
2Поставщик ООО Альфа, ИНН 7707083893(?<=ИНН )\d+7707083893=РЕГИЗВЛЕЧЬ(A2;"(?<=ИНН )\d+")
3Сумма к оплате: 15 400 руб.[\d ]+(?= руб)15 400=СЖПРОБЕЛЫ(РЕГИЗВЛЕЧЬ(A3;"[\d ]+(?= руб)"))
4Номер договора: Д-118/26 от 01.03Номер договора: (\S+)Д-118/26=РЕГИЗВЛЕЧЬ(A4;"Номер договора: (\S+)";2)

(?<=ИНН ) — «перед числом стоит ИНН и пробел». [\d ]+(?= руб) — цифры и пробелы, за которыми идёт « руб»; СЖПРОБЕЛЫ убирает пробел в начале. В третьей строке группа (\S+) в режиме 2 возвращает только номер без метки.

В английском Excel: =REGEXEXTRACT(A2,"(?<=ИНН )\d+")

Все совпадения в одной ячейке

Режим 1 разливает совпадения по ячейкам. Если их нужно собрать в одну ячейку через запятую, оберните формулу в ОБЪЕДИНИТЬ, а чтобы посчитать — в СЧЁТЗ или ЧСТРОК/ЧИСЛСТОЛБ.

ОБЪЕДИНИТЬ и СЧЁТЗ поверх РЕГИЗВЛЕЧЬ
B2=ЕСЛИОШИБКА(ОБЪЕДИНИТЬ(", ";ИСТИНА;РЕГИЗВЛЕЧЬ(A2;"#[^\s#]+";1));"")
ABC
1ТекстВсе хэштегиСколько
2Лучшие #скидки и #акции недели #excel#скидки, #акции, #excel=ЕСЛИОШИБКА(ОБЪЕДИНИТЬ(", ";ИСТИНА;РЕГИЗВЛЕЧЬ(A2;"#[^\s#]+";1));"")3=ЕСЛИОШИБКА(СЧЁТЗ(РЕГИЗВЛЕЧЬ(A2;"#[^\s#]+";1));0)
3без тегов=ЕСЛИОШИБКА(ОБЪЕДИНИТЬ(", ";ИСТИНА;РЕГИЗВЛЕЧЬ(A3;"#[^\s#]+";1));"")0=ЕСЛИОШИБКА(СЧЁТЗ(РЕГИЗВЛЕЧЬ(A3;"#[^\s#]+";1));0)

Во второй строке тегов нет: РЕГИЗВЛЕЧЬ вернула #Н/Д, и ЕСЛИОШИБКА подставила пустую строку и 0.

В английском Excel: =TEXTJOIN(", ",TRUE,REGEXEXTRACT(A2,"#[^\s#]+",1))

Без учёта регистра

По умолчанию «Excel» и «excel» — разные строки. Четвёртый аргумент 1 отключает учёт регистра, а результат возвращается так, как он записан в тексте. Тот же эффект даёт модификатор (?i) в начале шаблона.

Регистр букв
C3=РЕГИЗВЛЕЧЬ(A3;"excel";0;1)
ABC
1ТекстФормулаРезультат
2Скачать EXCEL-шаблон бесплатнос учётом регистра#Н/Д=РЕГИЗВЛЕЧЬ(A2;"excel")
3Скачать EXCEL-шаблон бесплатнобез учёта, аргумент 1EXCEL=РЕГИЗВЛЕЧЬ(A3;"excel";0;1)
4Скачать EXCEL-шаблон бесплатнобез учёта, (?i)EXCEL=РЕГИЗВЛЕЧЬ(A4;"(?i)excel")

Найденный фрагмент возвращается в исходном написании — «EXCEL». Чтобы получить его в другом регистре, оберните результат в СТРОЧН или ПРОПИСН.

В английском Excel: =REGEXEXTRACT(A3,"excel",0,1)

Если РЕГИЗВЛЕЧЬ нет в вашем Excel

В Excel 2010–2024 без подписки Microsoft 365 функция возвращает #ИМЯ?. Аналог — REGEXEXTRACT из бесплатной надстройки !SEMTools: =REGEXEXTRACT(A2;"\d+"). Отличия от встроенной функции:

  • если совпадения нет, возвращается пустая строка, а не #Н/Д;
  • всегда возвращается совпадение целиком — группы в скобках не выделяются; чтобы получить группу, используйте REGEXREPLACE с $1: =REGEXREPLACE(A2;".*ИНН (\d+).*";"$1");
  • третий аргумент ИСТИНА возвращает все совпадения в одной ячейке, четвёртый — разделитель: =REGEXEXTRACT(A2;"\d+";ИСТИНА;", ");
  • движок VBScript не поддерживает ретроспективную проверку (?<=…).

Почему РЕГИЗВЛЕЧЬ возвращает ошибку — частые ошибки

  • #Н/Д. Совпадение не найдено. Проверьте шаблон или оберните формулу в ЕСЛИОШИБКА.
  • #ПЕРЕНОС!. В режимах 1 и 2 массиву некуда разлиться — освободите ячейки справа.
  • Число не суммируется. РЕГИЗВЛЕЧЬ возвращает текст — добавьте -- или ЗНАЧЕН.
  • Извлекается слишком много. Квантификаторы * и + жадные: .* захватит текст до последнего совпадения. Используйте ленивый вариант .*? или более узкий класс символов.
  • #ИМЯ?. Функции нет в вашей версии Excel — используйте REGEXEXTRACT из !SEMTools.

Функция РЕГИЗВЛЕЧЬ — частые вопросы

Что делает функция РЕГИЗВЛЕЧЬ в Excel?

Извлекает из текста фрагмент по регулярному выражению: =РЕГИЗВЛЕЧЬ(A2;"\d+") вернёт первое число.

Как РЕГИЗВЛЕЧЬ называется на английском?

REGEXEXTRACT. Формула =РЕГИЗВЛЕЧЬ(A2;"\d+") в английском Excel — =REGEXEXTRACT(A2,"\d+").

Как извлечь все числа из ячейки?

Режимом 1: =РЕГИЗВЛЕЧЬ(A2;"\d+";1) — числа разольются по ячейкам; в одну ячейку их соберёт ОБЪЕДИНИТЬ.

Как извлечь только часть совпадения?

Возьмите нужную часть в скобки и укажите режим 2: =РЕГИЗВЛЕЧЬ(A2;"ИНН (\d+)";2).

Почему РЕГИЗВЛЕЧЬ возвращает #Н/Д?

В тексте нет фрагмента, подходящего под шаблон. Чтобы вместо ошибки была пустая ячейка, используйте =ЕСЛИОШИБКА(РЕГИЗВЛЕЧЬ(A2;"\d+");"").

Извлечь числа, слова, e-mail и любые фрагменты по шаблону во всём столбце сразу можно без формул — в пару кликов с !SEMTools, в любой версии Excel.
!SEMTools решает эту и сотни других задач в пару кликов!

Итоги: функция РЕГИЗВЛЕЧЬ в Excel

ЗадачаФормула
Первое число=РЕГИЗВЛЕЧЬ(A2;"\d+")
Все числа=РЕГИЗВЛЕЧЬ(A2;"\d+";1)
Часть в скобках=РЕГИЗВЛЕЧЬ(A2;"ИНН (\d+)";2)
После метки=РЕГИЗВЛЕЧЬ(A2;"(?<=ИНН )\d+")
Без ошибки #Н/Д=ЕСЛИОШИБКА(РЕГИЗВЛЕЧЬ(A2;"\d+");"")
Excel без 365=REGEXEXTRACT(A2;"\d+") (!SEMTools)

Надеюсь, на этой странице вы нашли то, что искали. РЕГИЗВЛЕЧЬ заменяет длинные связки ПСТР, ПОИСК и ДЛСТР одной формулой: опишите шаблон фрагмента — и Excel сам найдёт его в тексте.

Статьи, где используется РЕГИЗВЛЕЧЬ