Як видалити спеціальні / непотрібні символи в Excel

  • Поділитися Цим
Michael Brown

У цій статті ви дізнаєтеся, як видалити певні символи з текстового рядка і видалити непотрібні символи відразу з декількох комірок.

Під час імпорту даних в Excel з іншого місця на ваші робочі аркуші може потрапити ціла низка спеціальних символів. Ще більше засмучує те, що деякі символи невидимі, що призводить до появи зайвого білого простору перед, після або всередині текстових рядків. Цей підручник пропонує рішення для всіх цих проблем, позбавляючи вас від необхідності переглядати дані за коміркою та очищати непотрібніієрогліфи від руки.

    Видалення спеціального символу з комірки Excel

    Щоб видалити певний символ з комірки, замініть його порожнім рядком, використовуючи функцію ЗАМЕСТИТЬ в її найпростішому вигляді:

    SUBSTITUTE( клітина , char - символ , "")

    Наприклад, для усунення знаку питання з А2, формула в Б2 має вигляд:

    =SUBSTITUTE(A2, "?", "")

    Щоб видалити символ, який відсутній на клавіатурі, можна скопіювати/вставити його у формулу з вихідної комірки.

    Наприклад, ось як можна позбутися перевернутого знаку питання:

    =SUBSTITUTE(A2, "¿", "")

    Але якщо небажаний персонаж є невидимий або копіюється некоректно, як його підставити у формулу? Просто знайдіть його кодовий номер за допомогою функції КОД.

    У нашому випадку небажаний символ ("¿") стоїть на останньому місці в комірці А2, тому ми використовуємо комбінацію функцій КОД і ПРАВ, щоб отримати його унікальне кодове значення, яке дорівнює 191:

    =CODE(RIGHT(A2))

    Отримавши код символу, подайте відповідну функцію CHAR до загальної формули вище. Для нашого набору даних формула виглядає наступним чином:

    =SUBSTITUTE(A2, CHAR(191),"")

    Примітка. Функція SUBSTITUTE - це з урахуванням особливостей конкретного випадку Це означає, що він розглядає малі та великі літери як різні символи. Будь ласка, майте це на увазі, якщо ваш небажаний символ є літерою.

    Видалення декількох символів з рядка

    В одній з попередніх статей ми розглядали, як видаляти певні символи з рядків в Excel за допомогою вкладеності декількох функцій ПІДСТАНОВКА одна в іншу. Цей же підхід може бути використаний для усунення двох або більше небажаних символів за один раз:

    ПІДСТАВИТИ(ПІДСТАВИТИ(ПІДСТАВИТИ( клітина , char1 , ""), char2 , ""), char3 , "")

    Наприклад, щоб видалити з текстового рядка формату А2 звичайні знаки оклику і питання, а також перевернуті знаки, використовуйте цю формулу:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")

    Те ж саме можна зробити за допомогою функції CHAR, де 161 - код символу для "¡", а 191 - код символу для "¿":

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")

    Функції вкладених підстановок добре працюють для розумної кількості символів, але якщо потрібно видалити десятки символів, формула стає занадто довгою і складною в управлінні. Наступний приклад демонструє більш компактне і елегантне рішення.

    Видалення всіх небажаних символів відразу

    Рішення працює тільки в Excel для Microsoft 365

    Як ви, напевно, знаєте, в Excel 365 є спеціальна функція, яка дозволяє створювати власні функції, в тому числі ті, що обчислюють рекурсивно. Ця нова функція називається ЛАМБДА, і ви можете знайти повну інформацію про неї в навчальному посібнику за посиланням вище. Нижче я проілюструю концепцію на кількох практичних прикладах.

    Спеціальна функція LAMBDA для видалити небажані символи полягає в наступному:

    =LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))

    Щоб мати можливість використовувати цю функцію в своїх робочих аркушах, потрібно спочатку дати їй ім'я. Для цього натисніть Ctrl + F3, щоб відкрити вікно Ім'я менеджера а потім визначаємо a Нова назва таким чином:

    1. В рамках проекту Ім'я та прізвище введіть назву функції: RemoveChars .
    2. Встановіть приціл на Робочий зошит .
    3. В рамках проекту Відноситься до вставити наведену вище формулу.
    4. За бажанням, введіть опис параметрів в поле Коментарі Параметри будуть відображатися при введенні формули в комірку.
    5. Натисніть ГАРАЗД. щоб зберегти нову функцію.

    Для отримання детальної інструкції, будь ласка, дивіться розділ Як назвати користувацьку функцію LAMBDA.

    Після того, як функція отримала ім'я, до неї можна звертатися як до будь-якої власної формули.

    З точки зору користувача, синтаксис нашої користувацької функції дуже простий:

    RemoveChars(string, chars)

    Де:

    • Рядок - вихідний рядок або посилання на комірку/діапазон, що містить рядок(и).
    • Символи - Символи, які потрібно видалити. Може бути представлений текстовим рядком або посиланням на комірку.

    Для зручності ми вводимо непотрібні символи в якусь комірку, скажімо D2. Щоб видалити ці символи з А2, формула має вигляд:

    =RemoveChars(A2, $D$2)

    Для того, щоб формула працювала коректно, просимо звернути увагу на наступні моменти:

    • У D2 символи перераховані без пробілів, якщо тільки ви не бажаєте виключити пробіли.
    • Адреса комірки, що містить спеціальні символи, блокується знаком $ ($D$2), щоб запобігти зміні посилання при копіюванні формули в наступні комірки.

    А потім ми просто перетягуємо формулу вниз, і всі символи, перераховані в D2, видаляються з комірок з A2 по A6:

    Щоб очистити кілька комірок з однією формулою, вкажіть діапазон A2:A6 в якості 1-го аргументу:

    =RemoveChars(A2:A6, D2)

    Оскільки формула вводиться тільки в саму верхню комірку, можна не турбуватися про фіксацію координат комірки - в цьому випадку відмінно працює відносне посилання (D2). А завдяки підтримці динамічних масивів формула автоматично розливається в усі комірки, на які є посилання:

    Видалення заданого набору символів

    Щоб видалити заданий набір символів з декількох комірок, можна створити ще одну ЛАМБДУ, яка викликає основну RemoveChars і вказати небажані символи в 2-му параметрі. Наприклад:

    Видалити спеціальні символи ми створили користувацьку функцію з ім'ям RemoveSpecialChars :

    =LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))

    До видалити номери з текстових рядків ми створили ще одну функцію з іменем RemoveNumbers :

    =LAMBDA(string, RemoveChars(string, "0123456789"))

    Обидві наведені вище функції дуже прості у використанні, оскільки вимагають лише одного аргументу - вихідного рядка.

    Усунути спеціальні символи з А2, формула має вигляд:

    =RemoveSpecialChars(A2)

    Видаляти тільки цифрові символи:

    =RemoveNumbers(A2)

    Як працює ця функція:

    По суті, угода RemoveChars функція циклічно перебирає список символи і видаляє по одному символу за раз. Перед кожним рекурсивним викликом функція IF перевіряє решту символів. Якщо символи рядок не пустий (символи ""), функція викликає сама себе. Як тільки оброблено останній символ, повертається формула рядок його нинішній вигляд і виходи.

    Для детальної розбивки формули, будь ласка, дивіться Рекурсивна ЛАМБДА для видалення непотрібних символів.

    Видалення спеціальних символів за допомогою VBA

    Функції працюють у всіх версіях Excel

    Якщо функція LAMBDA відсутня у вашому Excel, ніщо не заважає вам створити аналогічну функцію за допомогою VBA. Функція, визначена користувачем (UDF), може бути написана двома способами.

    Спеціальна функція видалення спеціальних символів рекурсивний :

    Даний код емулює логіку роботи функції LAMBDA, розглянутої вище.

    Function RemoveUnnantedChars(str As String , chars As String ) If ( "" chars ) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnantedChars = RemoveUnantedChars(str, chars) Else RemoveUnantedChars = str End If End Function

    Спеціальна функція видалення спеціальних символів нерекурсивний :

    Тут ми циклічно перебираємо непотрібні символи від 1 до Len(chars) і замінюємо знайдені у вихідному рядку нічим. Функція MID витягує непотрібні символи по одному і передає їх у функцію Replace.

    Function RemoveUnnecessaryChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnecessaryChars = str End Function

    Вставте один з наведених вище кодів у свою книгу, як описано в розділі Як вставити код VBA в Excel, і ваша користувацька функція готова до використання.

    Щоб не плутати нашу нову функцію, визначену користувачем, з функцією, визначеною Лямбдою, ми назвали її по-іншому:

    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 має спеціальну функцію для видалення недрукованих символів - функцію ОЧИСТКА. Технічно вона видаляє перші 32 символи в 7-бітному наборі ASCII (коди від 0 до 31).

    Наприклад, видалити недруковані символи з А2, то ось формула, яку слід використовувати:

    =CLEAN(A2)

    Це дозволить усунути недруковані символи, але пробіли до/після тексту та між словами залишаться.

    Позбутися від додаткові місця обернути формулу CLEAN у функцію TRIM:

    =TRIM(CLEAN(A2))

    Тепер всі початкові та кінцеві пробіли видаляються, а проміжки між ними скорочуються до одного символу пробілу:

    Якщо ви хочете повністю видалити всі простори всередині рядка, то додатково замінити символ пробілу (кодове число 32) на порожній рядок:

    =TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))

    Деякі пробіли або інші невидимі символи все ще залишаються на робочому аркуші? Це означає, що ці символи мають різні значення в наборі символів Юнікоду.

    Наприклад, код символу нерозривний простір ( ) дорівнює 160 і очистити його можна за допомогою цієї формули:

    =SUBSTITUTE(A2, CHAR(160)," ")

    Щоб стерти специфічний недрукований символ необхідно спочатку знайти його кодове значення. Детальна інструкція та приклади формул тут: Як видалити конкретний недрукований символ.

    Видалення спеціальних символів за допомогою Ultimate Suite

    Підтримує Excel для Microsoft 365, Excel 2019 - 2010

    У цьому останньому прикладі дозвольте мені показати вам найпростіший спосіб видалення спеціальних символів в Excel. З встановленим пакетом Ultimate Suite це те, що вам потрібно зробити:

    1. Про це йдеться на Дані про абіти у вкладці Текст групу, натисніть Видалити > Видалення символів .

  • На панелі надбудови виберіть діапазон джерела, виберіть Видалення наборів символів та оберіть потрібний варіант зі списку, що випадає ( Символи та розділові знаки у цьому прикладі).
  • Натисни кнопку Видалити кнопку.
  • За мить ви отримаєте ідеальний результат:

    Якщо щось піде не так, не хвилюйтеся - резервна копія вашого аркуша буде створена автоматично у вигляді Створіть резервну копію цього аркуша за замовчуванням встановлено.

    Хочете спробувати наш інструмент видалення? Посилання на ознайомчу версію знаходиться нижче. Дякую за увагу і сподіваюся побачити вас на нашому блозі наступного тижня!

    Доступні для завантаження

    Видалення спеціальних символів - приклади (файл .xlsm)

    Ultimate Suite - пробна версія (файл .exe)

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.