Obsah
V tomto článku sa dozviete, ako odstrániť konkrétne znaky z textového reťazca a odstrániť nežiaduce znaky z viacerých buniek naraz.
Pri importe údajov do programu Excel odinakiaľ môže do vašich pracovných hárkov putovať množstvo špeciálnych znakov. Ešte nepríjemnejšie je, že niektoré znaky sú neviditeľné, čo spôsobuje, že pred textovými reťazcami, za nimi alebo vo vnútri textových reťazcov je navyše biele miesto. Tento návod poskytuje riešenia všetkých týchto problémov, čím vás ušetrí problémov s prechádzaním údajov po jednotlivých bunkách a čistením nechcenýchznaky ručne.
Odstránenie špeciálneho znaku z bunky programu Excel
Ak chcete z bunky odstrániť konkrétny znak, nahraďte ho prázdnym reťazcom pomocou funkcie SUBSTITUTE v jej najjednoduchšej podobe:
SUBSTITUTE( bunka , znak , "")Napríklad na odstránenie otáznika z A2 je vzorec v B2 nasledovný:
=SUBSTITUTE(A2, "?", "")
Ak chcete odstrániť znak, ktorý sa na klávesnici nenachádza, môžete ho skopírovať/vložiť do vzorca z pôvodnej bunky.
Napríklad tu nájdete postup, ako sa môžete zbaviť obráteného otáznika:
=SUBSTITUTE(A2, "¿", "")
Ale ak je nežiaduci znak neviditeľné alebo sa nekopíruje správne, ako ho vložíte do vzorca? Jednoducho zistite jeho kódové číslo pomocou funkcie CODE.
V našom prípade je neželaný znak ("¿") v bunke A2 posledný, takže na získanie jeho jedinečnej hodnoty kódu, ktorá je 191, použijeme kombináciu funkcií CODE a RIGHT:
=CODE(RIGHT(A2))
Po získaní kódu znaku použite príslušnú funkciu CHAR do vyššie uvedeného všeobecného vzorca. Pre náš súbor údajov je vzorec nasledujúci:
=SUBSTITUTE(A2, CHAR(191),"")
Poznámka: Funkcia SUBSTITUTE je rozlišovanie veľkých a malých písmen , čo znamená, že malé a veľké písmená považuje za rôzne znaky. Majte to na pamäti, ak je vaším nechceným znakom písmeno.
Odstránenie viacerých znakov z reťazca
V jednom z predchádzajúcich článkov sme sa zaoberali tým, ako odstrániť konkrétne znaky z reťazcov v programe Excel vnorením niekoľkých funkcií SUBSTITUTE do seba. Rovnaký prístup možno použiť na odstránenie dvoch alebo viacerých neželaných znakov naraz:
SUBSTITUČNÉ(SUBSTITUČNÉ(SUBSTITUČNÉ( bunka , char1 , ""), char2 , ""), char3 , "")Ak chcete napríklad z textového reťazca v A2 vymazať normálne výkričníky a otázniky, ako aj invertované výkričníky, použite tento vzorec:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")
To isté možno vykonať pomocou funkcie CHAR, kde 161 je kód znaku "¡" a 191 je kód znaku "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Vnorené funkcie SUBSTITUTE fungujú dobre pri rozumnom počte znakov, ale ak máte desiatky znakov, ktoré treba odstrániť, vzorec sa stáva príliš dlhým a ťažko zvládnuteľným. Ďalší príklad ukazuje kompaktnejšie a elegantnejšie riešenie.
Odstránenie všetkých nežiaducich znakov naraz
Riešenie funguje len v aplikácii Excel pre Microsoft 365
Ako pravdepodobne viete, Excel 365 má špeciálnu funkciu, ktorá vám umožňuje vytvárať vlastné funkcie vrátane tých, ktoré počítajú rekurzívne. Táto nová funkcia sa nazýva LAMBDA a všetky podrobnosti o nej nájdete vo vyššie uvedenom prepojenom návode. Nižšie vám tento koncept ilustrujem na niekoľkých praktických príkladoch.
Vlastná funkcia LAMBDA na odstrániť nežiaduce znaky je nasledovný:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))
Aby ste mohli túto funkciu používať vo svojich pracovných hárkoch, musíte ju najprv pomenovať. Na tento účel stlačte klávesovú skratku Ctrl + F3, čím otvoríte Názov manažéra a potom definovať a Nový názov týmto spôsobom:
- V Názov zadajte názov funkcie: RemoveChars .
- Nastavenie rozsahu na Pracovný zošit .
- V Vzťahuje sa na vložte vyššie uvedený vzorec.
- Voliteľne zadajte popis parametrov do políčka Komentáre Parametre sa zobrazia, keď do bunky zadáte vzorec.
- Kliknite na . OK a uložte novú funkciu.
Podrobné pokyny nájdete v časti Ako pomenovať vlastnú funkciu LAMBDA.
Keď funkcia dostane názov, môžete sa na ňu odvolávať ako na akýkoľvek iný vzorec.
Z pohľadu používateľa je syntax našej vlastnej funkcie jednoduchá:
RemoveChars(string, chars)Kde:
- String - je pôvodný reťazec alebo odkaz na bunku/oblasť obsahujúcu reťazec(y).
- Chars - znaky, ktoré sa majú odstrániť. Môžu byť reprezentované textovým reťazcom alebo odkazom na bunku.
Pre uľahčenie zadáme neželané znaky do niektorej bunky, povedzme D2. Na odstránenie týchto znakov z A2 slúži vzorec:
=RemoveChars(A2, $D$2)
Aby vzorec fungoval správne, dbajte na nasledujúce veci:
- V D2 sa znaky uvádzajú bez medzier, pokiaľ si neželáte odstrániť aj medzery.
- Adresa bunky obsahujúcej špeciálne znaky je uzamknutá znakom $ ($D$2), aby sa zabránilo zmene odkazu pri kopírovaní vzorca do nasledujúcich buniek.
A potom jednoducho pretiahneme vzorec nadol a z buniek A2 až A6 sa vymažú všetky znaky uvedené v D2:
Ak chcete vyčistiť viac buniek pomocou jedného vzorca, zadajte ako 1. argument rozsah A2:A6:
=RemoveChars(A2:A6, D2)
Keďže vzorec sa zadáva len do najvyššej bunky, nemusíte sa starať o uzamknutie súradníc bunky - relatívny odkaz (D2) v tomto prípade funguje dobre. A vďaka podpore dynamických polí sa vzorec automaticky preleje do všetkých odkazovaných buniek:
Odstránenie preddefinovanej sady znakov
Ak chcete vymazať preddefinovanú sadu znakov z viacerých buniek, môžete vytvoriť ďalší LAMBDA, ktorý zavolá hlavný RemoveChars a v druhom parametri zadajte nežiaduce znaky. Napríklad:
Vymazanie špeciálne znaky , sme vytvorili vlastnú funkciu s názvom RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))
Na odstrániť čísla z textových reťazcov sme vytvorili ešte jednu funkciu s názvom RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Obe uvedené funkcie sa používajú veľmi jednoducho, pretože vyžadujú len jeden argument - pôvodný reťazec.
Odstrániť špeciálne znaky z A2 je vzorec:
=RemoveSpecialChars(A2)
Vymazanie iba číselné znaky:
=RemoveNumbers(A2)
Ako táto funkcia funguje:
V podstate RemoveChars funkcia prechádza zoznamom znaky a odstraňuje jeden znak po druhom. Pred každým rekurzívnym volaním funkcia IF skontroluje zostávajúce znaky. znaky nie je prázdny (znaky""), funkcia sa zavolá sama. Hneď ako sa spracuje posledný znak, vzorec vráti reťazec jeho súčasnú podobu a výstupy.
Podrobný rozpis vzorca nájdete v časti Rekurzívny vzorec LAMBDA na odstránenie nežiaducich znakov.
Odstránenie špeciálnych znakov pomocou VBA
Funkcie fungujú vo všetkých verziách programu Excel
Ak vo vašom programe Excel nie je k dispozícii funkcia LAMBDA, nič vám nebráni vytvoriť podobnú funkciu pomocou VBA. Používateľom definovanú funkciu (UDF) možno napísať dvoma spôsobmi.
Vlastná funkcia na odstránenie špeciálnych znakov rekurzívne :
Tento kód napodobňuje logiku funkcie LAMBDA, o ktorej sme hovorili vyššie.
Funkcia 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 FunctionVlastná funkcia na odstránenie špeciálnych znakov nerekurzívne :
Tu prechádzame nežiaduce znaky od 1 po Len(chars) a tie, ktoré sa nachádzajú v pôvodnom reťazci, nenahrádzame ničím. Funkcia MID vyťahuje nežiaduce znaky jeden po druhom a odovzdáva ich funkcii Replace.
Funkcia RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str End FunctionVložte jeden z uvedených kódov do zošita, ako je vysvetlené v časti Ako vložiť kód VBA do programu Excel, a vaša vlastná funkcia je pripravená na použitie.
Aby sme si našu novú používateľsky definovanú funkciu nemýlili s funkciou definovanou metódou Lambda, pomenovali sme ju inak:
RemoveUnwantedChars(string, chars)Za predpokladu, že pôvodný reťazec je v A2 a nežiaduce znaky v D2, môžeme sa ich zbaviť pomocou tohto vzorca:
= RemoveUnwantedChars(A2, $D$2)
Vlastná funkcia s pevne zakódovanými znakmi
Ak sa nechcete zaoberať zadávaním špeciálnych znakov pre každý vzorec, môžete ich zadať priamo v kóde:
Funkcia 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 FunctionNezabudnite, že uvedený kód slúži na demonštračné účely. Na praktické použitie nezabudnite do nasledujúceho riadku uviesť všetky znaky, ktoré chcete odstrániť:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Táto vlastná funkcia má názov RemoveSpecialChars a vyžaduje len jeden argument - pôvodný reťazec:
RemoveSpecialChars(reťazec)Na odstránenie špeciálnych znakov z nášho súboru údajov sa použije vzorec:
=RemoveSpecialChars(A2)
Odstránenie netlačiteľných znakov v programe Excel
Microsoft Excel má špeciálnu funkciu na odstránenie netlačových znakov - funkciu CLEAN. Technicky odstraňuje prvých 32 znakov zo 7-bitovej sady ASCII (kódy 0 až 31).
Ak chcete napríklad odstrániť netlačiteľné znaky z A2, tu je vzorec, ktorý treba použiť:
=CLEAN(A2)
Tým sa odstránia netlačové znaky, ale medzery pred/za textom a medzi slovami zostanú zachované.
Zbaviť sa ďalšie miesta , zabaľte vzorec CLEAN do funkcie TRIM:
=TRIM(CLEAN(A2))
Teraz sa odstránia všetky úvodné a koncové medzery a medzery medzi nimi sa zredukujú na jeden znak medzery:
Ak by ste chceli úplne vymazať všetky priestory vnútri reťazca, potom dodatočne nahradí znak medzery (kódové číslo 32) prázdnym reťazcom:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Zostávajú vo vašom pracovnom hárku medzery alebo iné neviditeľné znaky? To znamená, že tieto znaky majú v znakovej sade Unicode iné hodnoty.
Napríklad kód znaku nezalomiteľná medzera ( ) je 160 a môžete ho vyčistiť pomocou tohto vzorca:
=SUBSTITUTE(A2, CHAR(160)," ")
Vymazanie špecifický netlačový znak , musíte najprv zistiť jeho kódovú hodnotu. Podrobný návod a príklady vzorcov nájdete tu: Ako odstrániť konkrétny netlačový znak.
Odstránenie špeciálnych znakov pomocou balíka Ultimate Suite
Podporuje aplikácie Excel pre Microsoft 365, Excel 2019 - 2010
V tomto poslednom príklade vám ukážem najjednoduchší spôsob odstránenia špeciálnych znakov v programe Excel. S nainštalovaným balíkom Ultimate Suite musíte urobiť toto:
- Na Údaje Ablebits na karte Text kliknite na položku Odstránenie stránky > Odstrániť znaky .
Za chvíľu získate dokonalý výsledok:
Ak sa niečo pokazí, nemusíte sa obávať - záložná kópia pracovného hárka sa vytvorí automaticky ako Zálohujte tento pracovný hárok je predvolene vybraté.
Ste zvedaví, či si môžete vyskúšať náš nástroj Remove? Odkaz na skúšobnú verziu nájdete nižšie. Ďakujem vám za prečítanie a dúfam, že sa na našom blogu uvidíme budúci týždeň!
Dostupné súbory na stiahnutie
Odstránenie špeciálnych znakov - príklady (.xlsm súbor)
Ultimate Suite - skúšobná verzia (.exe súbor)