Как да изтриете специални/нежелани символи в Excel

  • Споделя Това
Michael Brown

В тази статия ще научите как да изтривате определени символи от текстов низ и да премахвате нежелани символи от няколко клетки едновременно.

Когато импортирате данни в Excel от друго място, в работните ви листове могат да се появят множество специални символи. Още по-неприятно е, че някои символи са невидими, което води до допълнително бяло пространство преди, след или вътре в текстовите низове. Този урок предоставя решения за всички тези проблеми, като ви спестява необходимостта да преглеждате данните клетка по клетка и да изчиствате нежеланитесимволите на ръка.

    Премахване на специален символ от клетка на Excel

    За да изтриете определен символ от клетка, заменете го с празен низ, като използвате функцията SUBSTITUTE в нейната най-проста форма:

    ЗАМЕСТВАНЕ( клетка , char , "")

    Например, за да премахнете въпросителния знак от A2, формулата в B2 е:

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

    За да премахнете символ, който не присъства на клавиатурата, можете да го копирате/вмъкнете във формулата от оригиналната клетка.

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

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

    Но ако нежеланият символ е невидими или не се копира правилно, как да го въведете във формулата? Просто намерете неговия кодов номер, като използвате функцията CODE.

    В нашия случай нежеланият символ ("¿") се намира на последно място в клетка А2, затова използваме комбинация от функциите CODE и RIGHT, за да извлечем неговата уникална стойност на кода, която е 191:

    =КОД(RIGHT(A2))

    След като получите кода на символа, използвайте съответната функция CHAR в общата формула по-горе. За нашата съвкупност от данни формулата е следната:

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

    Забележка. Функцията SUBSTITUTE е отчитане на малки и големи букви , което означава, че третира малките и големите букви като различни символи. Моля, имайте предвид това, ако нежеланият символ е буква.

    Изтриване на няколко символа от низ

    В една от предишните статии разгледахме как да премахнем определени символи от низове в Excel, като вложим няколко функции SUBSTITUTE една в друга. Същият подход може да се използва за премахване на два или повече нежелани символа наведнъж:

    ЗАМЕСТИТЕЛ(ЗАМЕСТИТЕЛ(ЗАМЕСТИТЕЛ( клетка , char1 , ""), char2 , ""), char3 , "")

    Например, за да изтриете нормалните възклицателни и въпросителни знаци, както и обърнатите такива от текстов низ в A2, използвайте тази формула:

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

    Същото може да се направи с помощта на функцията CHAR, където 161 е кодът на символа "¡", а 191 е кодът на символа "¿":

    =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 Ново име по този начин:

    1. В Име въведете името на функцията: RemoveChars .
    2. Задайте обхвата на Работна тетрадка .
    3. В Отнася се за вмъкнете горната формула.
    4. По желание въведете описание на параметрите в полето Коментари Параметрите ще се показват, когато въведете формула в клетка.
    5. Кликнете върху ОК за да запазите новата си функция.

    За подробни инструкции вижте Как да наименуваме потребителска функция на LAMBDA.

    След като функцията получи име, можете да се обръщате към нея както към всяка друга родна формула.

    От гледна точка на потребителя синтаксисът на нашата потребителска функция е прост:

    Премахване на символитеChars(string, chars)

    Къде:

    • Редица - е оригиналният низ или препратка към клетката/обхвата, съдържащ низ(и).
    • Chars - Може да бъде представен като текстов низ или препратка към клетка.

    За удобство въвеждаме нежелани символи в някоя клетка, например D2. За да премахнем тези символи от A2, формулата е:

    =RemoveChars(A2, $D$2)

    За да работи формулата правилно, моля, обърнете внимание на следните неща:

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

    И след това просто плъзгаме формулата надолу и всички символи, изброени в D2, се изтриват от клетките от A2 до A6:

    За да почистите няколко клетки с една формула, задайте диапазона A2:A6 за първия аргумент:

    =RemoveChars(A2:A6, D2)

    Тъй като формулата е въведена само в най-горната клетка, не е необходимо да се притеснявате за заключване на координатите на клетките - в този случай относителната препратка (D2) работи добре. А благодарение на поддръжката на динамични масиви формулата се разпространява автоматично във всички препратени клетки:

    Премахване на предварително зададен набор от символи

    За да изтриете предварително определен набор от символи от няколко клетки, можете да създадете друг LAMBDA, който извиква основния RemoveChars и посочете нежеланите символи във втория параметър. Например:

    Изтриване на специални символи , създадохме потребителска функция с име RemoveSpecialChars :

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

    За премахване на номера от текстови низове, създадохме още една функция, наречена RemoveNumbers :

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

    И двете горепосочени функции са изключително лесни за използване, тъй като изискват само един аргумент - оригиналния низ.

    За да премахнете специални символи от A2, формулата е:

    =Отстраняване на специалните знаци(A2)

    Изтриване само на цифрови символи:

    =Отстраняване на числата(A2)

    Как работи тази функция:

    По същество RemoveChars функцията преминава през списъка с знаци преди всяко рекурсивно извикване функцията IF проверява останалите символи. знаци не е празен (символите""), функцията се извиква сама. Щом последният символ бъде обработен, формулата връща низ сегашната си форма и излиза от нея.

    За подробна разбивка на формулата вижте Рекурсивна LAMBDA за премахване на нежелани символи.

    Премахване на специални символи с VBA

    Функциите работят във всички версии на Excel

    Ако функцията LAMBDA не е налична във вашия Excel, нищо не ви пречи да създадете подобна функция с VBA. Дефинираната от потребителя функция (UDF) може да бъде написана по два начина.

    Потребителска функция за изтриване на специални символи рекурсивен :

    Този код емулира логиката на функцията LAMBDA, разгледана по-горе.

    Функция 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.

    Функция 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)

    Потребителска функция с твърдо кодирани символи

    Ако не искате да се занимавате с предоставянето на специални символи за всяка формула, можете да ги посочите директно в кода:

    Функция 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(низ)

    За да премахнем специалните символи от нашата съвкупност от данни, формулата е:

    =Отстраняване на специалните знаци(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 трябва да направите следното:

    1. На Данни от Ablebits в раздела Текст група, щракнете върху Премахване на > Премахване на символите .

  • В прозореца на добавката изберете обхвата на източника, изберете Премахване на набори от символи и изберете желаната опция от падащия списък ( Символи & препинателни знаци в този пример).
  • Натиснете Премахване на бутон.
  • След малко ще получите перфектен резултат:

    Ако нещо се обърка, не се притеснявайте - резервно копие на работния ви лист ще бъде създадено автоматично като Архивирайте този работен лист е избрано по подразбиране.

    Любопитно ви е да изпробвате нашия инструмент за премахване? Връзката към версията за оценка е точно по-долу. Благодаря ви за четенето и се надявам да се видим в нашия блог следващата седмица!

    Налични изтегляния

    Изтриване на специални символи - примери (.xlsm файл)

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

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.