Оглавление
В этой статье вы узнаете, как удалять определенные символы из текстовой строки и удалять ненужные символы сразу из нескольких ячеек.
При импорте данных в Excel из другого места на ваши рабочие листы может попасть множество специальных символов. Еще более неприятным является то, что некоторые символы невидимы, что приводит к появлению лишнего белого пространства до, после или внутри текстовых строк. В этом учебнике представлены решения всех этих проблем, избавляющие вас от необходимости просматривать данные ячейка за ячейкой и удалять ненужные.символов вручную.
Удаление специального символа из ячейки Excel
Чтобы удалить определенный символ из ячейки, замените его пустой строкой, используя функцию SUBSTITUTE в ее простейшей форме:
ЗАМЕНИТЬ( ячейка , char , "")Например, чтобы убрать знак вопроса из A2, формула в B2 будет такой:
=SUBSTITUTE(A2, "?", "")
Чтобы удалить символ, которого нет на клавиатуре, можно скопировать/вставить его в формулу из исходной ячейки.
Например, вот как можно избавиться от перевернутого вопросительного знака:
=SUBSTITUTE(A2, "¿", "")
Но если нежелательный персонаж невидимый или не копируется правильно, как его вставить в формулу? Просто найдите его кодовый номер с помощью функции КОД.
В нашем случае ненужный символ ("¿") стоит последним в ячейке A2, поэтому мы используем комбинацию функций CODE и RIGHT для получения его уникального кодового значения, которое равно 191:
=CODE(RIGHT(A2))
Получив код символа, подставьте соответствующую функцию CHAR в общую формулу, приведенную выше. Для нашего набора данных формула выглядит следующим образом:
=SUBSTITUTE(A2, CHAR(191),"")
Примечание. Функция SUBSTITUTE является с учетом регистра Это означает, что строчные и заглавные буквы рассматриваются как разные символы. Пожалуйста, имейте это в виду, если ваш нежелательный символ - буква.
Удаление нескольких символов из строки
В одной из предыдущих статей мы рассмотрели, как удалять определенные символы из строк в Excel путем вложения нескольких функций SUBSTITUTE одна в другую. Тот же подход можно использовать для удаления двух или более нежелательных символов за один раз:
ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ( ячейка , шар1 , ""), чар2 , ""), чар3 , "")Например, чтобы удалить обычные восклицательные и вопросительные знаки, а также инвертированные знаки из текстовой строки в A2, используйте эту формулу:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", ""))
То же самое можно сделать с помощью функции CHAR, где 161 - код символа для "¡", а 191 - код символа для "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Вложенные функции SUBSTITUTE отлично работают при разумном количестве символов, но если вам нужно удалить десятки символов, формула становится слишком длинной и трудно управляемой. Следующий пример демонстрирует более компактное и элегантное решение.
Удалите все нежелательные символы сразу
Решение работает только в Excel для Microsoft 365
Как вы, вероятно, знаете, в Excel 365 есть специальная функция, позволяющая создавать собственные функции, в том числе рекурсивные. Эта новая функция называется LAMBDA, и все подробности о ней вы можете найти в учебнике по ссылке выше. Ниже я проиллюстрирую эту концепцию на нескольких практических примерах.
Пользовательская функция LAMBDA для удаление нежелательных символов заключается в следующем:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string)))
Чтобы иметь возможность использовать эту функцию в своих листах, необходимо сначала присвоить ей имя. Для этого нажмите Ctrl + F3, чтобы открыть функцию Именной менеджер , а затем определить a Новое имя таким образом:
- В Имя введите имя функции: RemoveChars .
- Установите область действия на Рабочая тетрадь .
- В Относится к вставьте приведенную выше формулу.
- По желанию введите описание параметров в поле Комментарии Параметры будут отображаться при вводе формулы в ячейку.
- Нажмите OK чтобы сохранить новую функцию.
Подробные инструкции см. в разделе Как присвоить имя пользовательской функции LAMBDA.
Как только функция получает имя, вы можете ссылаться на нее, как на любую родную формулу.
С точки зрения пользователя, синтаксис нашей пользовательской функции прост:
RemoveChars(string, chars)Где:
- Строка - исходная строка или ссылка на ячейку/диапазон, содержащий строку(ы).
- Chars - символы для удаления. Могут быть представлены текстовой строкой или ссылкой на ячейку.
Для удобства мы вводим нежелательные символы в некоторую ячейку, скажем D2. Чтобы удалить эти символы из A2, используется формула:
=RemoveChars(A2, $D$2)
Чтобы формула работала правильно, обратите внимание на следующие моменты:
- В D2 символы перечислены без пробелов, если вы не хотите исключить пробелы.
- Адрес ячейки, содержащей специальные символы, блокируется знаком $ ($D$2), чтобы ссылка не менялась при копировании формулы в нижележащие ячейки.
Затем мы просто перетаскиваем формулу вниз, и все символы, перечисленные в D2, удаляются из ячеек с A2 по A6:
Чтобы очистить несколько ячеек с помощью одной формулы, введите диапазон A2:A6 в качестве 1-го аргумента:
=RemoveChars(A2:A6, D2)
Поскольку формула вводится только в самой верхней ячейке, вам не нужно беспокоиться о фиксации координат ячейки - относительная ссылка (D2) в этом случае работает отлично. А благодаря поддержке динамических массивов формула автоматически распространяется на все ссылающиеся ячейки:
Удаление предопределенного набора символов
Чтобы удалить заранее определенный набор символов из нескольких ячеек, можно создать еще один LAMBDA, который вызывает основной RemoveChars функцию и укажите нежелательные символы во 2-м параметре. Например:
Чтобы удалить специальные символы мы создали пользовательскую функцию с именем RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))
На удалять номера из текстовых строк, мы создали еще одну функцию под названием RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Обе вышеуказанные функции очень просты в использовании, так как требуют только один аргумент - исходную строку.
Для устранения специальные символы из A2, формула такова:
=RemoveSpecialChars(A2)
Чтобы удалить только числовые символы:
=RemoveNumbers(A2)
Как работает эта функция:
По сути RemoveChars функция циклически просматривает список символы и удаляет по одному символу за раз. Перед каждым рекурсивным вызовом функция ЕСЛИ проверяет оставшиеся символы. Если символ символы строка не пуста (chars""), функция вызывает сама себя. Как только последний символ будет обработан, формула возвращается строка его нынешнюю форму и выходы.
Подробный разбор формулы см. в разделе Рекурсивная LAMBDA для удаления нежелательных символов.
Удаление специальных символов с помощью VBA
Функции работают во всех версиях Excel
Если функция LAMBDA недоступна в вашем Excel, ничто не мешает вам создать аналогичную функцию с помощью VBA. Определяемая пользователем функция (UDF) может быть написана двумя способами.
Пользовательская функция для удаления специальных символов рекурсивный :
Этот код эмулирует логику функции LAMBDA, рассмотренной выше.
Function RemoveUnwantedChars(str As String , chars As String ) If ( "" chars) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Else RemoveUnwantedChars = str End If End FunctionПользовательская функция для удаления специальных символов нерекурсивный :
Здесь мы перебираем нежелательные символы от 1 до Len(chars) и заменяем найденные в исходной строке ничем. Функция MID извлекает нежелательные символы по одному и передает их в функцию Replace.
Function RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str End FunctionВставьте один из вышеуказанных кодов в рабочую книгу, как описано в разделе Как вставить код VBA в Excel, и ваша пользовательская функция готова к использованию.
Чтобы не путать нашу новую функцию, определяемую пользователем, с функцией, определяемой Lambda, мы назвали ее по-другому:
RemoveUnwantedChars(string, chars)Предполагая, что исходная строка находится в A2, а нежелательные символы в D2, мы можем избавиться от них с помощью этой формулы:
= RemoveUnwantedChars(A2, $D$2)
Пользовательская функция с жестко заданными символами
Если вы не хотите утруждать себя поставкой специальных символов для каждой формулы, вы можете указать их непосредственно в коде:
Function RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/\~+-" For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveSpecialChars = str End FunctionПожалуйста, имейте в виду, что приведенный выше код предназначен для демонстрационных целей. Для практического использования убедитесь, что все символы, которые вы хотите удалить, включены в следующую строку:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Эта пользовательская функция называется RemoveSpecialChars и требует только один аргумент - исходную строку:
RemoveSpecialChars(string)Чтобы удалить специальные символы из нашего набора данных, формула выглядит следующим образом:
=RemoveSpecialChars(A2)
Удаление непечатаемых символов в Excel
В Microsoft Excel есть специальная функция для удаления непечатных символов - функция CLEAN. Технически она удаляет первые 32 символа из 7-битного набора ASCII (коды с 0 по 31).
Например, для удаления непечатаемые символы из A2, вот формула, которую нужно использовать:
=CLEAN(A2)
Это устранит непечатные символы, но пробелы перед/после текста и между словами останутся.
Чтобы избавиться от дополнительные места Заверните формулу CLEAN в функцию TRIM:
=TRIM(CLEAN(A2))
Теперь все ведущие и последующие пробелы удаляются, а промежуточные пробелы сокращаются до одного символа пробела:
Если вы хотите удалить абсолютно все помещения внутри строки, то дополнительно замените символ пробела (код номер 32) на пустую строку:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Некоторые пробелы или другие невидимые символы все еще остаются в вашем рабочем листе? Это означает, что эти символы имеют разные значения в наборе символов Unicode.
Например, код символа неразрывное пространство ( ) составляет 160, и вы можете очистить его по этой формуле:
=SUBSTITUTE(A2, CHAR(160)," ")
Чтобы стереть специальный непечатный символ Подробные инструкции и примеры формул находятся здесь: Как удалить определенный непечатный символ.
Удаление специальных символов с помощью Ultimate Suite
Поддерживает Excel для Microsoft 365, Excel 2019 - 2010
В последнем примере я покажу вам самый простой способ удаления специальных символов в Excel. При установленном пакете Ultimate Suite вот что вам нужно сделать:
- На Ablebits Data во вкладке Текст группу, нажмите Удалить > Удалить символы .
Через мгновение вы получите превосходный результат:
Если что-то пойдет не так, не волнуйтесь - резервная копия вашего рабочего листа будет создана автоматически по мере того, как Создайте резервную копию этого рабочего листа выбран по умолчанию.
Хотите попробовать наш инструмент "Удаление"? Ссылка на ознакомительную версию находится ниже. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Доступные загрузки
Удаление специальных символов - примеры (файл.xlsm)
Ultimate Suite - пробная версия (файл .exe)