Функция ПОДСТАВИТЬ (на английском SUBSTITUTE) заменяет в тексте один фрагмент на другой: =ПОДСТАВИТЬ(A2;".";",") заменит все точки на запятые, =ПОДСТАВИТЬ(A2;" ";"") удалит все пробелы, а четвёртый аргумент меняет только нужное по счёту вхождение — =ПОДСТАВИТЬ(A2;" ";"-";2). Функция различает регистр. Несколько замен делают вложенными ПОДСТАВИТЬ, а вместе с ДЛСТР она считает, сколько раз символ или слово встречается в ячейке.
| Раздел функций | Текстовые |
| Название и описание на английском | SUBSTITUTE |
| Волатильность | Не волатильная |
| Похожие функции | ЗАМЕНИТЬ |
Что делает функция ПОДСТАВИТЬ?
Функция ПОДСТАВИТЬ позволяет заменить все вхождения или N-ное вхождение подстроки в тексте на другой текст. Подстрокой может быть как один символ, так и несколько.
Функция является в некоторой степени аналогом процедуры Найти и Заменить в Excel, с некоторыми отличиями:
- Что очевидно и является базовым отличием, она является функцией, т.е. пересчитывается автоматически, в отличие от одноразового характера процедур, и выводит результат в другую ячейку, в то время, как процедура меняет результат на месте;
- Функция ПОДСТАВИТЬ всегда чувствительна к регистру. В процедуре "найти и заменить" чувствительность к регистру опциональна;
- Функция, как это ни странно, не поддерживает подстановочные символы ("*" и "?");
- Зато позволяет осуществлять массовую замену нескольких (до 64 в последней версии Excel) значений одновременно;
- Еще одно преимущество функции в том, что она позволяет заменить не все вхождения, а определенное по порядку в строке, чего не позволяет сделать процедура.
Синтаксис ПОДСТАВИТЬ
=ПОДСТАВИТЬ(Ячейка_или_текст;Заменяемый_текст;Чем_заменяем;[Порядковый_номер_заменяемого])
Последний аргумент является необязательным (поэтому указан в квадратных скобках в примере), если его не указывать, будут заменены все вхождения.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Текст | Все пробелы → «-» | Только 2-й пробел | «руб.» → «₽» |
| 2 | 8 916 123 45 67 | 8-916-123-45-67=ПОДСТАВИТЬ(A2;" ";"-") | 8 916-123 45 67=ПОДСТАВИТЬ(A2;" ";"-";2) | 8 916 123 45 67=ПОДСТАВИТЬ(A2;"руб.";"₽") |
| 3 | Цена 100 руб. | Цена-100-руб.=ПОДСТАВИТЬ(A3;" ";"-") | Цена 100-руб.=ПОДСТАВИТЬ(A3;" ";"-";2) | Цена 100 ₽=ПОДСТАВИТЬ(A3;"руб.";"₽") |
| 4 | Итого 5 Руб. | Итого-5-Руб.=ПОДСТАВИТЬ(A4;" ";"-") | Итого 5-Руб.=ПОДСТАВИТЬ(A4;" ";"-";2) | Итого 5 Руб.=ПОДСТАВИТЬ(A4;"руб.";"₽") |
В строке 4 «Руб.» с заглавной не заменилось: ПОДСТАВИТЬ различает регистр.
В английском Excel: =SUBSTITUTE(A2," ","-",2)
ПОДСТАВИТЬ: формат результата и исходных данных
Характерные особенности функции ПОДСТАВИТЬ:
- Пустая ячейка воспринимается как строка нулевой длины ("").
- Логические значения конвертируются в текст с сохранением регистра.
- Все вариации числовых форматов (дата, время, дата-время, проценты, финансовый формат) конвертируются в соответствующее им натуральное число в текстовом формате, поэтому для сохранения исходного форматирования может понадобиться функция ТЕКСТ.
Примеры формул с функцией ПОДСТАВИТЬ
Функция ПОДСТАВИТЬ необычайно популярна и может использоваться:
- по прямому назначению, когда необходимым результатом является сама строка с заменнными фрагментами
- как вспомогательная функция в сложносоставных формулах, когда результатом вычислений является даже не строка, а число или логическое значение
Рассмотрю несколько примеров ситуаций, в которых лично использовал функцию.
ПОДСТАВИТЬ с несколькими условиями (транслитерация)
Заменить кириллицу на транслит автоматически с помощью формулы? Можно! Правда, длина формулы настолько велика, что ее лучше сохранить где-нибудь, а не составлять самостоятельно. Потому что это формула с 64 условиями (уровнями вложенности). Подробнее - по ссылке в начале этого абзаца.

ПОДСТАВИТЬ, чтобы посчитать слова
Тот случай, когда функция используется не по своему назначению, т.к. целевым значением является число, а не текст. Лайфхак стар как мир, но не теряет своей актуальности.
Сколько слов в ячейке? На 1 больше, чем пробелов между ними. Это будет справедливо всегда, если разделителем слов считается только пробел, и если пробелов между каждыми двумя словами не более 1. Чтобы обезопасить себя от лишних, можно воспользоваться функцией СЖПРОБЕЛЫ.
Как посчитать пробелы в строке? Как и любой символ, можно посчитать их, подсчитав длину строки с ними и без них, и вычислив разницу. Как получить строку без них? Конечно, с помощью функции ПОДСТАВИТЬ.
Так будет выглядеть формула для ячейки A1, учитывающая все эти нюансы. ДЛСТР измеряет длину строк:
=ДЛСТР(СЖПРОБЕЛЫ(A1)) - ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);" ";"")) + 1
У формулы есть побочный эффект - для пустой ячейки она возвращает 1, поэтому, если пустые ячейки могут присутствовать, формулу выше придется "обернуть" выражением с Excel функцией ЕСЛИ:
=ЕСЛИ(A1="";0;ДЛСТР(СЖПРОБЕЛЫ(A1)) - ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);" ";"")) + 1)
| A | B | |
|---|---|---|
| 1 | Текст | Слов |
| 2 | купить угловой диван | 3=ЕСЛИ(A2="";0;ДЛСТР(СЖПРОБЕЛЫ(A2))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A2);" ";""))+1) |
| 3 | два слова | 2=ЕСЛИ(A3="";0;ДЛСТР(СЖПРОБЕЛЫ(A3))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A3);" ";""))+1) |
| 4 | 0=ЕСЛИ(A4="";0;ДЛСТР(СЖПРОБЕЛЫ(A4))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A4);" ";""))+1) |
СЖПРОБЕЛЫ убирает лишние пробелы, разница длин даёт число пробелов между словами, +1 — число слов. Для пустой ячейки ЕСЛИ возвращает 0.
В английском Excel: =IF(A2="",0,LEN(TRIM(A2))-LEN(SUBSTITUTE(TRIM(A2)," ",""))+1)
Заменить пробелы на переносы строк
Часто возникает задача заменить пробелы в строке на переносы строк, и наоборот. Здесь будет полезна комбинация функций ПОДСТАВИТЬ и СИМВОЛ. Так будет выглядеть формула, заменяющая все пробелы в строке на переносы строк.
=ПОДСТАВИТЬ(A1;" ";СИМВОЛ(10))
Как видно из формулы, код символа переноса строки - 10.
Обратите внимание, что результат может отображаться сплошной строкой, если не включить опцию "Перенести текст".

| A | B | C | |
|---|---|---|---|
| 1 | Текст | Пробелы → переносы | Переносы → «, » |
| 2 | Москва Тверь Клин | Москва Тверь Клин=ПОДСТАВИТЬ(A2;" ";СИМВОЛ(10)) | Москва, Тверь, Клин=ПОДСТАВИТЬ(B2;СИМВОЛ(10);", ") |
Чтобы переносы были видны, у ячейки должен быть включён «Перенос текста». Третий столбец превращает переносы из B2 обратно в список через запятую.
В английском Excel: =SUBSTITUTE(A2," ",CHAR(10))
ПОДСТАВИТЬ, чтобы посчитать встречаемость в тексте
Узнать, сколько раз встречается фрагмент в тексте, можно довольно просто с помощью комбинации функций ПОДСТАВИТЬ и ДЛСТР.
- Первая (ПОДСТАВИТЬ) позволяет создать строку без указанного фрагмента, заменяя его на пустоту.
- Вторая (ДЛСТР) - измерить длину результата.
- Если вычесть из исходной длины полученную, и разделить на длину этого фрагмента, можно получить его встречаемость.
- Если заведомо известно, что это один символ, процесс деления можно опустить, т.к. результат от деления на 1 не изменится.
Так выглядит формула, считающая в ячейке A1 количество вхождений 1-символьного фрагмента из ячейки B1:
=ДЛСТР(A1) - ДЛСТР(ПОДСТАВИТЬ(A1;B1;""))
Так - для подсчета встречаемости конкретного символа в ячейке, в данном случае - косой черты, что позволяет, например, посчитать уровень вложенности директории URL по ее адресу:
=ДЛСТР(A1) - ДЛСТР(ПОДСТАВИТЬ(A1;"/";""))
А так - для фрагмента длиной более 1 символа, например, если нужно посчитать, сколько раз встречается конкретное слово в тексте:
=(ДЛСТР(A1) - ДЛСТР(ПОДСТАВИТЬ(A1;B1;""))) / ДЛСТР(B1)
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Текст | Фрагмент | Сколько «/» | Сколько раз фрагмент |
| 2 | site.ru/catalog/sofas/corner/ | catalog | 4=ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;"/";"")) | 1=(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;B2;"")))/ДЛСТР(B2) |
| 3 | чай зелёный, чай чёрный | чай | 0=ДЛСТР(A3)-ДЛСТР(ПОДСТАВИТЬ(A3;"/";"")) | 2=(ДЛСТР(A3)-ДЛСТР(ПОДСТАВИТЬ(A3;B3;"")))/ДЛСТР(B3) |
Разница длин строки с фрагментом и без него, делённая на длину фрагмента, — число вхождений. Количество «/» в адресе показывает уровень вложенности страницы.
В английском Excel: =(LEN(A2)-LEN(SUBSTITUTE(A2,B2,"")))/LEN(B2)
ПОДСТАВИТЬ для подсчета цифр в тексте
Представим, что наша задача - провалидировать список номеров телефонов на количество цифр в нем. Корректным будем считать номер, в котором 11 цифр.
При этом номер может быть указан в любом формате - со скобками, дефисами, плюсом в начале, с пробелами и без. Помимо самого номера в строке могут присутствовать другие пометки, например, контактное лицо, является телефон мобильным или нет.
Очевидно, что функция ДЛСТР не подойдет в таком случае, как и не удастся сходу удалить все лишние символы, чтобы оставить в ячейках только цифры.
Комбинация функций ПОДСТАВИТЬ и ДЛСТР в формуле массива с функцией СУММ позволит решить данную задачу:
=СУММ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;{1;2;3;4;5;6;7;8;9;0};"")))
| A | B | C | |
|---|---|---|---|
| 1 | Телефон | Цифр | Корректный? |
| 2 | +7 (916) 123-45-67 | 11=СУММ(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;{1;2;3;4;5;6;7;8;9;0};""))) | ИСТИНА=B2=11 |
| 3 | 8916123456 | 10=СУММ(ДЛСТР(A3)-ДЛСТР(ПОДСТАВИТЬ(A3;{1;2;3;4;5;6;7;8;9;0};""))) | ЛОЖЬ=B3=11 |
| 4 | тел. 8-903-555-01-01, доб. 2 | 12=СУММ(ДЛСТР(A4)-ДЛСТР(ПОДСТАВИТЬ(A4;{1;2;3;4;5;6;7;8;9;0};""))) | ЛОЖЬ=B4=11 |
ПОДСТАВИТЬ по очереди удаляет каждую из десяти цифр, и СУММ складывает разницы длин. В Excel 2019 и раньше — Ctrl+Shift+Enter.

Несколько замен одной формулой
Чтобы заменить сразу несколько фрагментов, ПОДСТАВИТЬ вкладывают друг в друга: результат внутренней замены становится текстом для внешней. Так же устроена формула транслитерации выше, только уровней в ней 64.
| A | B | |
|---|---|---|
| 1 | Текст | ё → е с учётом регистра |
| 2 | Ёлка и ёжик | Елка и ежик=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;"ё";"е");"Ё";"Е") |
| 3 | Пётр Семёнов | Петр Семенов=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3;"ё";"е");"Ё";"Е") |
Строчная и заглавная буквы — разные символы для ПОДСТАВИТЬ, поэтому нужны две замены.
В английском Excel: =SUBSTITUTE(SUBSTITUTE(A2,"ё","е"),"Ё","Е")
Другие примеры с функцией ПОДСТАВИТЬ
Добавить символ к каждому слову в ячейке
Удалить последнее слово в ячейке
Почему ПОДСТАВИТЬ не заменяет — частые ошибки
- Ничего не заменилось. Не совпал регистр («Руб.» и «руб.») или в тексте неразрывный пробел вместо обычного — замените СИМВОЛ(160).
- Число стало текстом. ПОДСТАВИТЬ всегда возвращает текст. Для чисел поставьте перед формулой два минуса: =--ПОДСТАВИТЬ(A2;".";",").
- Заменилась часть другого слова. ПОДСТАВИТЬ ищет фрагмент, а не слово. Для слова целиком добавьте пробелы: ПОДСТАВИТЬ(" "&A2&" ";" кот ";" пёс ").
- Нужно заменить по позиции, а не по тексту. Для этого есть ЗАМЕНИТЬ.
Функция ПОДСТАВИТЬ — частые вопросы
Как работает функция ПОДСТАВИТЬ в Excel?
Ищет в тексте фрагмент и заменяет его: =ПОДСТАВИТЬ(A2;"старое";"новое").
Как называется ПОДСТАВИТЬ на английском?
SUBSTITUTE. Синтаксис тот же: =SUBSTITUTE(text,old_text,new_text,[instance_num]).
Как заменить несколько разных значений?
Вложить ПОДСТАВИТЬ друг в друга или использовать массовую замену.
Как заменить только второе вхождение?
Укажите номер четвёртым аргументом: =ПОДСТАВИТЬ(A2;" ";"-";2).
Чем ПОДСТАВИТЬ отличается от ЗАМЕНИТЬ?
ПОДСТАВИТЬ ищет текст, ЗАМЕНИТЬ меняет символы по позиции.
Заменить символы, слова и целые списки значений по вхождению или регулярному выражению сразу во всём диапазоне можно в пару кликов с !SEMTools.
!SEMTools решает эту и сотни других задач в пару кликов!
Итоги: функция ПОДСТАВИТЬ в Excel
| Задача | Формула |
|---|---|
| Заменить фрагмент везде | =ПОДСТАВИТЬ(A2;"старое";"новое") |
| Только N-е вхождение | =ПОДСТАВИТЬ(A2;"старое";"новое";N) |
| Удалить символ | =ПОДСТАВИТЬ(A2;"-";"") |
| Сколько раз встречается | =(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;B2;"")))/ДЛСТР(B2) |
| Несколько замен | вложенные ПОДСТАВИТЬ |
Надеюсь, на этой странице вы нашли то, что искали. ПОДСТАВИТЬ — главная функция для замены и удаления фрагментов текста формулой.
Добрый день! Формула «=ДЛСТР(A1) — ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»»)) + 1″ не выдает ожидаемого результата. Может ее нужно записать как «=ДЛСТР(СЖПРОБЕЛЫ(A1)) — ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»»)) + 1″?
Спасибо, заметили недочет! Если в строке есть лишние пробелы, подсчет будет некорректный. Разумеется, СЖПРОБЕЛЫ нужно применять в обоих случаях — и до замены и после.
Поправил.
ПОДСТАВИТЬ(A1;{1;2;3;4;5;6;7;8;9;0};»») заменяет только первый символ, то есть «1»
Не совсем так. Формула заменяет все десять, просто в десяти разных виртуальных ячейках — и если выводить в одну, то и увидите только одну. Это формула массива, так они работают.
Как заменить повторяющиеся значения на не потрорящиеся значения
Это слишком общая формулировка, нужно более детальное описание задачи, тогда и решение найдем!