Оглавление
В учебном пособии объясняются функции Excel REPLACE и SUBSTITUTE с примерами использования. Узнайте, как использовать функцию REPLACE с текстовыми строками, числами и датами, а также как вложить несколько функций REPLACE или SUBSTITUTE в одну формулу.
На прошлой неделе мы обсудили различные способы использования функций FIND и SEARCH в рабочих листах Excel. Сегодня мы более подробно рассмотрим две другие функции для замены текста в ячейке на основе его расположения или замены одной текстовой строки другой на основе содержимого. Как вы уже догадались, я говорю о функциях Excel REPLACE и SUBSTITUTE.
Функция Excel REPLACE
Функция REPLACE в Excel позволяет заменить один или несколько символов в текстовой строке на другой символ или набор символов.
REPLACE(old_text, start_num, num_chars, new_text)Как вы видите, функция Excel REPLACE имеет 4 аргумента, все из которых являются обязательными.
- Старый_текст - исходный текст (или ссылка на ячейку с исходным текстом), в котором нужно заменить некоторые символы.
- начальное_число - позиция первого символа в старом_тексте, который вы хотите заменить.
- Num_chars - количество символов, которые вы хотите заменить.
- Новый_текст - заменяющий текст.
Например, чтобы изменить слово " солнце " до " сын ", вы можете использовать следующую формулу:
=REPLACE("sun", 2, 1, "o")
А если вы поместите исходное слово в какую-то ячейку, скажем, A2, вы можете указать ссылку на соответствующую ячейку в аргументе old_text:
=REPLACE(A2, 2, 1, "o")
Примечание. Если аргумент start_num или num_chars является отрицательным или нечисловым, формула Excel Replace возвращает ошибку #VALUE!
Использование функции Excel REPLACE с числовыми значениями
Функция REPLACE в Excel предназначена для работы с текстовыми строками. Конечно, вы можете использовать ее, например, для замены числовых символов, которые являются частью текстовой строки:
=REPLACE(A2, 7, 4, "2016")
Обратите внимание, что мы заключили "2016" в двойные кавычки, как это обычно делается с текстовыми значениями.
Аналогичным образом можно заменить одну или несколько цифр в числе. Например:
=REPLACE(A4, 4, 4, "6")
И снова необходимо заключить значение замены в двойные кавычки ("6").
Примечание. Формула Excel REPLACE всегда возвращает значение текстовая строка И поскольку это текстовое значение, вы не сможете использовать его в других вычислениях, пока не преобразуете его обратно в число, например, умножив на 1 или используя любой другой метод, описанный в разделе Как преобразовать текст в число.
Использование функции Excel REPLACE с датами
Как вы только что увидели, функция REPLACE прекрасно работает с числами, за исключением того, что она возвращает текстовую строку :) Помня, что во внутренней системе Excel даты хранятся как числа, вы можете попытаться использовать некоторые формулы Replace на датах. Результат будет весьма неловким.
Например, у вас есть дата в A2, скажем, 1-Oct-14, и вы хотите изменить " Октябрь " до " Ноябрь ". Итак, вы написали формулу REPLACE(A2, 4, 3, "Nov"), которая говорит Excel заменить 3 символа в ячейках A2, начиная с 4-го символа... и получили следующий результат:
Почему? Потому что "01-Oct-14" - это только визуальное представление основного серийного номера (41913), который представляет собой дату. Итак, наша формула Replace изменяет последние 3 цифры в вышеуказанном серийном номере на " Ноябрь " и возвращает текстовую строку "419Nov".
Чтобы заставить функцию Excel REPLACE корректно работать с датами, вы можете сначала преобразовать даты в текстовые строки с помощью функции TEXT или любой другой техники, продемонстрированной в статье Как преобразовать дату в текст в Excel. В качестве альтернативы вы можете встроить функцию TEXT непосредственно в аргумент old_text функции REPLACE:
=REPLACE(TEXT(A2, "dd-mmm-yy"), 4, 3, "Nov")
Пожалуйста, помните, что результатом вышеприведенной формулы является текстовая строка Если вам нужны даты, а не текстовые строки, используйте функцию DATEVALUE для преобразования значений, возвращаемых функцией Excel REPLACE, в даты:
=DATEVALUE(REPLACE(TEXT(A2, "dd-mmm-yy"), 4, 3, "Nov"))
Вложенные функции REPLACE для выполнения нескольких замен в ячейке
Довольно часто вам может понадобиться выполнить более одной замены в одной и той же ячейке. Конечно, вы можете выполнить одну замену, вывести промежуточный результат в дополнительный столбец, а затем снова использовать функцию REPLACE. Однако лучшим и более профессиональным способом является использование функции вложенные функции REPLACE которые позволяют выполнять несколько замен с помощью одной формулы. В данном контексте "вложенность" означает размещение одной функции внутри другой.
Предположим, у вас есть список телефонных номеров в столбце A, отформатированный как "123456789", и вы хотите сделать их более похожими на телефонные номера, добавив дефисы. Другими словами, ваша цель - превратить "123456789" в "123-456-789".
Вставить первый дефис очень просто. Вы пишете обычную формулу Excel Replace, которая заменяет нулевые символы с дефисом, т.е. добавляет дефис в 4-ю позицию в ячейке:
=REPLACE(A2,4,0,"-")
Результат вышеприведенной формулы Замена выглядит следующим образом:
Хорошо, а теперь нам нужно вставить еще один дефис в 8-ю позицию. Чтобы сделать это, вы помещаете приведенную выше формулу в другую функцию Excel REPLACE. Точнее, вы вставляете ее в функцию старый_текст аргумент другой функции, чтобы вторая функция REPLACE обрабатывала значение, возвращаемое первой REPLACE, а не значение в ячейке A2:
=REPLACE(REPLACE(A2,4,0,"-"),8,0,"-")
В результате вы получите телефонные номера в нужном форматировании:
Аналогичным образом вы можете использовать вложенные функции REPLACE, чтобы сделать текстовые строки похожими на даты, добавляя прямую косую черту (/) там, где это необходимо:
=(REPLACE(REPLACE(REPLACE(A2,3,0,"/"),6,0,"/")))
Более того, вы можете преобразовать текстовые строки в реальные даты, обернув приведенную выше формулу REPLACE функцией DATEVALUE:
=DATEVALUE(REPLACE(REPLACE(A2,3,0,"/"),6,0,"/"))
И, естественно, вы не ограничены в количестве функций, которые можно вложить в одну формулу (современные версии Excel 2010, 2013 и 2016 допускают до 8192 символов и до 64 вложенных функций в формуле).
Например, вы можете использовать 3 вложенные функции REPLACE, чтобы число в A2 отображалось как дата и время:
=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(A2,3,0,"/") ,6,0,"/"), 9,0, " "), 12,0, ":"))
Замена строки, которая появляется в разных позициях в каждой ячейке
До сих пор во всех примерах мы имели дело со значениями одинакового характера и производили замену в одной и той же позиции в каждой ячейке. Но в реальной жизни задачи часто оказываются сложнее. В ваших рабочих листах заменяемые символы могут не всегда находиться в одном и том же месте в каждой ячейке, и поэтому вам придется найти позицию первого символа который следует заменить. Следующий пример продемонстрирует, о чем я говорю.
Предположим, у вас есть список адресов электронной почты в столбце А. И название одной компании изменилось с "ABC" на, скажем, "BCA". Таким образом, вам нужно соответствующим образом обновить адреса электронной почты всех клиентов.
Но проблема в том, что имена клиентов имеют разную длину, и поэтому вы не можете точно указать, где начинается имя компании. Другими словами, вы не знаете, какое значение нужно указать в аргументе start_num функции Excel REPLACE. Чтобы выяснить это, используйте функцию Excel FIND, чтобы определить позицию первого символа в строке "@abc":
=FIND("@abc",A2)
А затем введите приведенную выше функцию FIND в аргумент start_num вашей формулы REPLACE:
=REPLACE(A2, FIND("@abc",A2), 4, "@bca")
Совет. Мы включаем "@" в формулу поиска и замены Excel, чтобы избежать случайных замен в именной части адресов электронной почты. Конечно, вероятность таких совпадений очень мала, но все же вы можете захотеть подстраховаться.
Как видно на следующем снимке экрана, формула без проблем находит и заменяет старый текст на новый. Однако если заменяемая текстовая строка не найдена, формула возвращает ошибку #VALUE!
И мы хотим, чтобы формула возвращала исходный адрес электронной почты вместо ошибки. Итак, давайте заключим нашу формулу FIND & REPLACE в функцию IFERROR:
=IFERROR(REPLACE(A2, FIND("@abc",A2), 4, "@bca"),A2)
И эта усовершенствованная формула прекрасно работает, не так ли?
Еще одно практическое применение функции REPLACE - выделение первой буквы в ячейке заглавной. Если вы имеете дело со списком имен, продуктов и т.п., вы можете использовать приведенную выше формулу для изменения первой буквы на UPPERCASE.
Совет. Если вы хотите сделать замену в исходных данных, более простым способом будет использование диалога Excel FIND и REPLACE.
Функция Excel SUBSTITUTE
Функция SUBSTITUTE в Excel заменяет один или несколько экземпляров заданного символа или текстовой строки на указанный символ(ы).
Синтаксис функции Excel SUBSTITUTE следующий:
SUBSTITUTE(text, old_text, new_text, [instance_num])Первые три аргумента являются обязательными, а последний - необязательным.
- Текст - исходный текст, в который нужно заменить символы. Может быть предоставлен как тестовая строка, ссылка на ячейку или результат другой формулы.
- Старый_текст - символ(ы), который(ые) вы хотите заменить.
- Новый_текст - новый(ые) символ(ы) для замены старого_текста.
- Номер_экземпляра - вхождение old_text, которое вы хотите заменить. Если не указано, каждое вхождение старого текста будет заменено на новый текст.
Например, все приведенные ниже формулы заменяют "1" на "2" в ячейке A2, но возвращают разные результаты в зависимости от того, какое число вы указали в последнем аргументе:
=SUBSTITUTE(A2, "1", "2", 1)
- Заменяет первое вхождение "1" на "2".
=SUBSTITUTE(A2, "1", "2", 2)
- Заменяет второе вхождение "1" на "2".
=SUBSTITUTE(A2, "1", "2")
- Заменяет все вхождения "1" на "2".
На практике функция SUBSTITUTE также используется для удаления нежелательных символов из ячеек. Примеры из реальной жизни смотрите в разделе:
- Как удалить символы или слова из строки
- Как удалить ненужные символы из ячеек
Примечание. Функция SUBSTITUTE в Excel - это с учетом регистра Например, следующая формула заменяет все экземпляры прописной буквы "X" на "Y" в ячейке A2, но не заменяет ни одного экземпляра строчной буквы "x".
Замена нескольких значений одной формулой (вложенный SUBSTITUTE)
Как и в случае с функцией Excel REPLACE, вы можете вложить несколько функций SUBSTITUTE в одну формулу, чтобы выполнить несколько замен одновременно, т.е. заменить несколько символов или подстрок одной формулой.
Предположим, у вас есть текстовая строка типа " PR1, ML1, T1 " в ячейке A2, где "PR" означает "Проект", "ML" означает "Веха", а "T" означает "Задача". Вы хотите заменить эти три кода на полные имена. Чтобы достичь этого, вы можете написать 3 различные формулы SUBSTITUTE:
=SUBSTITUTE(A2, "PR", "Project ")
=SUBSTITUTE(A2, "ML", "Milestone ")
=SUBSTITUTE(A2, "T", "Task ")
А затем вложить их друг в друга:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "PR", "Project "), "ML", "Milestone "), "T", "Task ")
Обратите внимание, что мы добавили пробел в конце каждого аргумента new_text для лучшей читабельности.
Чтобы узнать о других способах замены нескольких значений за один раз, см. раздел Как выполнить массовый поиск и замену в Excel.
Excel REPLACE против Excel SUBSTITUTE
Функции Excel REPLACE и SUBSTITUTE очень похожи друг на друга тем, что обе предназначены для замены текстовых строк. Различия между этими двумя функциями заключаются в следующем:
- SUBSTITUTE заменяет один или несколько экземпляры заданного символа или текстовой строки. Поэтому, если вы знаете текст, который нужно заменить, используйте функцию Excel SUBSTITUTE.
- REPLACE изменяет символы в указанном позиция Таким образом, если вы знаете позицию символа (символов), который нужно заменить, используйте функцию Excel REPLACE.
- Функция SUBSTITUTE в Excel позволяет добавить необязательный параметр (instance_num), который указывает, какие возникновение старый_текст должен быть заменен на новый_текст.
Вот так можно использовать функции SUBSTITUTE и REPLACE в Excel. Надеюсь, эти примеры окажутся полезными при решении ваших задач. Благодарю вас за чтение и надеюсь увидеть в нашем блоге на следующей неделе!
Скачать рабочую тетрадь для практических занятий
Примеры формул REPLACE и SUBSTITUTE (файл.xlsx)