Функция ТЕКСТДО (на английском TEXTBEFORE) возвращает часть текста до указанного символа или слова: =ТЕКСТДО(A2;",") из «Москва, ул. Ленина, д. 5» оставит «Москва». Третьим аргументом выбирают, до какого по счёту вхождения резать: =ТЕКСТДО(A2;"/";-1) вернёт всё до последнего слеша. Раньше для этого нужна была связка ЛЕВСИМВ и ПОИСК, а для последнего вхождения — ещё и ПОДСТАВИТЬ. Функция есть в Microsoft 365 и Excel 2024.
| Раздел функций | Текстовые |
| Название на английском | TEXTBEFORE |
| Версии Excel | Excel 2024, Excel для Microsoft 365 (Windows и Mac), Excel в интернете |
| Волатильность | Не волатильная |
| Похожие функции | ТЕКСТПОСЛЕ, ТЕКСТРАЗД, ЛЕВСИМВ, ПОИСК, РЕГИЗВЛЕЧЬ |
Синтаксис функции ТЕКСТДО
=ТЕКСТДО(текст;разделитель;[номер_экземпляра];[режим_сопоставления];[конец_совпадения];[если_не_найдено])
- текст — ячейка или строка, из которой берём начало;
- разделитель — символ или несколько символов, до которых режем: ",", " ", "@", " - ";
- номер_экземпляра — до какого вхождения: 1 (по умолчанию) первое, 2 второе, −1 последнее, −2 предпоследнее;
- режим_сопоставления — 0 (по умолчанию) с учётом регистра, 1 без учёта; важно, когда разделитель — буквы;
- конец_совпадения — 1 считает конец текста разделителем: если разделителя нет, вернётся весь текст;
- если_не_найдено — что вернуть, если разделителя нет; без этого аргумента будет #Н/Д.
Сам разделитель в результат не попадает. Зеркальная функция ТЕКСТПОСЛЕ (TEXTAFTER) с теми же аргументами возвращает часть текста после разделителя.
Текст до первого символа
| A | B | C | |
|---|---|---|---|
| 1 | Текст | Разделитель | Результат |
| 2 | Москва, ул. Ленина, д. 5 | , | Москва=ТЕКСТДО(A2;B2) |
| 3 | ivan.petrov@mail.ru | @ | ivan.petrov=ТЕКСТДО(A3;B3) |
| 4 | SKU-4471/XL | / | SKU-4471=ТЕКСТДО(A4;B4) |
| 5 | Иванов Иван Петрович | Иванов=ТЕКСТДО(A5;B5) |
Разделитель можно брать из ячейки, как здесь, или писать прямо в формуле в кавычках. С пробелом получается первое слово — фамилия из ФИО.
В английском Excel: =TEXTBEFORE(A2,B2)
Для сравнения: та же задача в Excel 2021 и раньше — =ЛЕВСИМВ(A2;ПОИСК(",";A2)-1). ПОИСК находит позицию запятой, ЛЕВСИМВ берёт символы до неё. Работает, но формула длиннее и сразу ломается, если нужно не первое вхождение. Подробно оба подхода разобраны в статье о том, как извлечь текст до символа.
До второго, последнего или N-го вхождения
Здесь ТЕКСТДО выигрывает у старых формул больше всего. Номер вхождения просто передаётся третьим аргументом, а отрицательный номер считает с конца.
| A | B | C | |
|---|---|---|---|
| 1 | Путь | Вхождение | Результат |
| 2 | catalog/mebel/divany/orlando | 1 | catalog=ТЕКСТДО(A2;"/";B2) |
| 3 | catalog/mebel/divany/orlando | 2 | catalog/mebel=ТЕКСТДО(A3;"/";B3) |
| 4 | catalog/mebel/divany/orlando | -1 | catalog/mebel/divany=ТЕКСТДО(A4;"/";B4) |
| 5 | catalog/mebel/divany/orlando | -2 | catalog/mebel=ТЕКСТДО(A5;"/";B5) |
−1 — до последнего слеша, то есть родительский раздел. Если номер больше числа разделителей в тексте, функция вернёт #Н/Д.
В английском Excel: =TEXTBEFORE(A4,"/",-1)
Без ТЕКСТДО «до последнего вхождения» в Excel решают трюком с ПОДСТАВИТЬ и ПОВТОР, который мало кто пишет по памяти. Он показан в статье о том, как удалить текст после символа.
Если разделителя нет: #Н/Д и как её убрать
Когда разделителя в ячейке нет, ТЕКСТДО возвращает #Н/Д. Обычно в таком случае нужно вернуть текст целиком. Есть два способа, и оба без ЕСЛИОШИБКА:
| A | B | C | D | |
|---|---|---|---|---|
| 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) |
Надеюсь, на этой странице вы нашли то, что искали, и забрали нужную часть строки. ТЕКСТДО заменяет сразу три старые функции и особенно хороша там, где нужно не первое вхождение. Для разовой чистки большого столбца удобнее сделать то же на месте, а если нужно разбить текст сразу на все части, берите ТЕКСТРАЗД. Похожие задачи: извлечь первые слова ячеек и удалить последние слова.