Возможности !SEMTools
↑ Навигация по задачам в Excel и возможностям надстройки !SEMTools ↑

ТЕКСТДО

Функция ТЕКСТДО (на английском TEXTBEFORE) возвращает часть текста до указанного символа или слова: =ТЕКСТДО(A2;",") из «Москва, ул. Ленина, д. 5» оставит «Москва». Третьим аргументом выбирают, до какого по счёту вхождения резать: =ТЕКСТДО(A2;"/";-1) вернёт всё до последнего слеша. Раньше для этого нужна была связка ЛЕВСИМВ и ПОИСК, а для последнего вхождения — ещё и ПОДСТАВИТЬ. Функция есть в Microsoft 365 и Excel 2024.

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

Синтаксис функции ТЕКСТДО

=ТЕКСТДО(текст;разделитель;[номер_экземпляра];[режим_сопоставления];[конец_совпадения];[если_не_найдено])
  • текст — ячейка или строка, из которой берём начало;
  • разделитель — символ или несколько символов, до которых режем: ",", " ", "@", " - ";
  • номер_экземпляра — до какого вхождения: 1 (по умолчанию) первое, 2 второе, −1 последнее, −2 предпоследнее;
  • режим_сопоставления — 0 (по умолчанию) с учётом регистра, 1 без учёта; важно, когда разделитель — буквы;
  • конец_совпадения — 1 считает конец текста разделителем: если разделителя нет, вернётся весь текст;
  • если_не_найдено — что вернуть, если разделителя нет; без этого аргумента будет #Н/Д.

Сам разделитель в результат не попадает. Зеркальная функция ТЕКСТПОСЛЕ (TEXTAFTER) с теми же аргументами возвращает часть текста после разделителя.

Текст до первого символа

ТЕКСТДО: всё до разделителя
C2=ТЕКСТДО(A2;B2)
ABC
1ТекстРазделительРезультат
2Москва, ул. Ленина, д. 5,Москва=ТЕКСТДО(A2;B2)
3ivan.petrov@mail.ru@ivan.petrov=ТЕКСТДО(A3;B3)
4SKU-4471/XL/SKU-4471=ТЕКСТДО(A4;B4)
5Иванов Иван Петрович Иванов=ТЕКСТДО(A5;B5)

Разделитель можно брать из ячейки, как здесь, или писать прямо в формуле в кавычках. С пробелом получается первое слово — фамилия из ФИО.

В английском Excel: =TEXTBEFORE(A2,B2)

Для сравнения: та же задача в Excel 2021 и раньше — =ЛЕВСИМВ(A2;ПОИСК(",";A2)-1). ПОИСК находит позицию запятой, ЛЕВСИМВ берёт символы до неё. Работает, но формула длиннее и сразу ломается, если нужно не первое вхождение. Подробно оба подхода разобраны в статье о том, как извлечь текст до символа.

До второго, последнего или N-го вхождения

Здесь ТЕКСТДО выигрывает у старых формул больше всего. Номер вхождения просто передаётся третьим аргументом, а отрицательный номер считает с конца.

Путь в каталоге: обрезаем на разной глубине
C4=ТЕКСТДО(A4;"/";B4)
ABC
1ПутьВхождениеРезультат
2catalog/mebel/divany/orlando1catalog=ТЕКСТДО(A2;"/";B2)
3catalog/mebel/divany/orlando2catalog/mebel=ТЕКСТДО(A3;"/";B3)
4catalog/mebel/divany/orlando-1catalog/mebel/divany=ТЕКСТДО(A4;"/";B4)
5catalog/mebel/divany/orlando-2catalog/mebel=ТЕКСТДО(A5;"/";B5)

−1 — до последнего слеша, то есть родительский раздел. Если номер больше числа разделителей в тексте, функция вернёт #Н/Д.

В английском Excel: =TEXTBEFORE(A4,"/",-1)

Без ТЕКСТДО «до последнего вхождения» в Excel решают трюком с ПОДСТАВИТЬ и ПОВТОР, который мало кто пишет по памяти. Он показан в статье о том, как удалить текст после символа.

Если разделителя нет: #Н/Д и как её убрать

Когда разделителя в ячейке нет, ТЕКСТДО возвращает #Н/Д. Обычно в таком случае нужно вернуть текст целиком. Есть два способа, и оба без ЕСЛИОШИБКА:

Ячейка без запятой
C3=ТЕКСТДО(A3;",";;;1)
ABCD
1ТекстБез настройкиконец_совпадения = 1если_не_найдено
2Москва, ул. ЛенинаМосква=ТЕКСТДО(A2;",")Москва=ТЕКСТДО(A2;",";;;1)Москва=ТЕКСТДО(A2;",";;;;A2)
3Казань#Н/Д=ТЕКСТДО(A3;",")Казань=ТЕКСТДО(A3;",";;;1)Казань=ТЕКСТДО(A3;",";;;;A3)

Пятый аргумент 1 говорит: «если запятой нет, считай концом текста конец строки». Шестой аргумент подставляет любое значение, здесь саму ячейку. Пропущенные аргументы — точки с запятой подряд.

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

Регистр и несколько разделителей

По умолчанию ТЕКСТДО учитывает регистр. С символами вроде запятой это не важно, а с буквенными разделителями — очень. Например, отрезать описание после слова «цвет», которое в выгрузке написано то строчными, то заглавными:

=ТЕКСТДО(A2;" цвет";;1)

Четвёртый аргумент 1 отключает учёт регистра, и из «Футболка ЦВЕТ: синий» и «Футболка цвет: красный» получится одинаковое «Футболка».

Если в данных встречаются разные разделители, их перечисляют в фигурных скобках через точку с запятой, как в ТЕКСТРАЗД: =ТЕКСТДО(A2;{",";";"}) вернёт текст до первой запятой или точки с запятой — смотря что встретится раньше. Из «яблоко; груша, слива» получится «яблоко».

ТЕКСТДО для целого столбца и в связке

В Microsoft 365 функции можно передать сразу диапазон: =ТЕКСТДО(A2:A100;"@") вернёт логины для всех адресов одной формулой, результат разольётся вниз. Полезные сочетания:

ЗадачаФормула
Первое слово ячейки=ТЕКСТДО(A2;" ";;;1)
Всё, кроме последнего слова=ТЕКСТДО(A2;" ";-1)
Домен из адреса сайта (до первого слеша после https://)=ТЕКСТДО(ТЕКСТПОСЛЕ(A2;"//");"/")
Текст между двумя символами=ТЕКСТДО(ТЕКСТПОСЛЕ(A2;"(");")")
Число до разделителя как число=ЗНАЧЕН(ТЕКСТДО(A2;" "))

Последняя строка важна: ТЕКСТДО всегда возвращает текст, даже если это цифры. Чтобы с результатом можно было считать, оберните его в ЗНАЧЕН или прибавьте 0. Связка ТЕКСТДО и ТЕКСТПОСЛЕ заменяет ПСТР в задачах «вытащить кусок между скобками» — подробнее про обратную задачу в статье о том, как извлечь текст после символа.

Почему ТЕКСТДО не работает

  • #Н/Д — разделителя нет в ячейке, номер вхождения больше, чем разделителей, или разделитель отличается регистром. Используйте пятый или шестой аргумент, для букв — четвёртый.
  • #ЗНАЧ! — номер вхождения равен 0 или длиннее самого текста.
  • #ИМЯ? — функции нет в вашей версии Excel. В Excel 2021 и раньше используйте ЛЕВСИМВ и ПОИСК.
  • Лишний пробел в конце результата — в данных перед разделителем стоял пробел. Укажите разделитель вместе с пробелом (" ,") или оберните результат в СЖПРОБЕЛЫ.
  • Число не складывается — результат текстовый, нужна ЗНАЧЕН.

Функция ТЕКСТДО — частые вопросы

Что делает функция ТЕКСТДО в Excel?

Возвращает часть текста до указанного разделителя: =ТЕКСТДО(A2;",").

Как ТЕКСТДО называется на английском?

TEXTBEFORE. Формула =ТЕКСТДО(A2;",") в английском Excel — =TEXTBEFORE(A2,",").

Как взять текст до последнего вхождения символа?

Третьим аргументом −1: =ТЕКСТДО(A2;"/";-1).

Что делать, если ТЕКСТДО возвращает #Н/Д?

Разделителя нет в ячейке. Чтобы вернуть весь текст, укажите пятый аргумент 1: =ТЕКСТДО(A2;",";;;1).

Чем заменить ТЕКСТДО в старом Excel?

Связкой ЛЕВСИМВ и ПОИСК: =ЛЕВСИМВ(A2;ПОИСК(",";A2)-1).

Даже с ТЕКСТДО формулу нужно написать, протянуть, заменить результат значениями и удалить исходный столбец. !SEMTools оставляет текст до символа прямо в исходных ячейках: выделил столбец, выбрал «Часть до…», указал символ — готово. До последнего вхождения текст оставит соседняя процедура удаления текста после символа.
!SEMTools решает эту и сотни других задач в пару кликов!

Итоги: функция ТЕКСТДО в Excel

ЗадачаФормула
Текст до первого символа=ТЕКСТДО(A2;",")
До второго вхождения=ТЕКСТДО(A2;"/";2)
До последнего вхождения=ТЕКСТДО(A2;"/";-1)
Весь текст, если разделителя нет=ТЕКСТДО(A2;",";;;1)
Без учёта регистра=ТЕКСТДО(A2;" цвет";;1)
Excel 2021 и раньше=ЛЕВСИМВ(A2;ПОИСК(",";A2)-1)

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

Статьи, где используется ТЕКСТДО