Tartalomjegyzék
Ebben a cikkben megtanulhatja, hogyan törölhet bizonyos karaktereket egy szöveges karakterláncból, és hogyan távolíthatja el a nem kívánt karaktereket egyszerre több cellából.
Amikor az adatokat máshonnan importáljuk az Excelbe, rengeteg speciális karakter kerülhet a munkalapokra. Ami még frusztrálóbb, hogy egyes karakterek láthatatlanok, ami extra fehér teret eredményez a szöveges karakterláncok előtt, után vagy belsejében. Ez a bemutató megoldást kínál mindezekre a problémákra, megkímélve Önt attól a fáradságtól, hogy cellánként végigmenjen az adatokon, és megtisztítsa a nemkívánatoskarakterek kézzel.
Speciális karakter eltávolítása az Excel cellából
Ha egy adott karaktert szeretne törölni egy cellából, helyettesítse azt egy üres karakterlánccal a SUBSTITUTE függvény legegyszerűbb formájának használatával:
SUBSTITUTE( sejt , char , "")Például, ha egy kérdőjelet akarunk kitörölni az A2-ből, akkor a B2-ben a következő képletet kell használni:
=SUBSTITUTE(A2, "?", "")
A billentyűzeten nem szereplő karakterek eltávolításához másolja/illessze be a képletbe az eredeti cellából.
Például így szabadulhatsz meg egy fordított kérdőjeltől:
=SUBSTITUTE(A2, "¿", "")
De ha egy nem kívánt karakter láthatatlan vagy nem másolja helyesen, hogyan helyezze be a képletbe? Egyszerűen keresse meg a kódszámát a CODE funkció segítségével.
Esetünkben a nem kívánt karakter ("¿") az A2 cellában az utolsó, ezért a CODE és a RIGHT függvények kombinációját használjuk az egyedi kódértékének kinyerésére, amely 191:
=CODE(RIGHT(A2))
Miután megkapta a karakter kódját, adja meg a megfelelő CHAR függvényt a fenti általános képlethez. A mi adathalmazunk esetében a képlet a következőképpen néz ki:
=SUBSTITUTE(A2, CHAR(191),"")
Megjegyzés: A SUBSTITUTE funkció case-sensitive , ami azt jelenti, hogy a kis- és nagybetűket különböző karakterként kezeli. Kérjük, tartsa ezt szem előtt, ha a nem kívánt karakter egy betű.
Több karakter törlése a karakterláncból
Az egyik korábbi cikkben azt vizsgáltuk, hogyan lehet bizonyos karaktereket eltávolítani az Excelben a karakterláncokból több SUBSTITUTE függvény egymásba ágyazásával. Ugyanez a megközelítés használható két vagy több nem kívánt karakter egy menetben történő eltávolítására:
HELYETTESÍTŐ(HELYETTESÍTŐ(HELYETTESÍTŐ( sejt , char1 , ""), char2 , ""), char3 , "")Ha például az A2-ben lévő szöveges karakterláncból a normál felkiáltó- és kérdőjeleket, valamint az invertáltakat is ki akarja törölni, használja ezt a képletet:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", ""), "¿", "")
Ugyanez a CHAR függvény segítségével is elvégezhető, ahol 161 a "¡" és 191 a "¿" karakterkódja:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
A beágyazott SUBSTITUTE függvények ésszerű számú karakter esetén jól működnek, de ha több tucat karaktert kell eltávolítani, a képlet túl hosszú és nehezen kezelhető lesz. A következő példa egy sokkal tömörebb és elegánsabb megoldást mutat be.
Az összes nem kívánt karakter egyszerre történő eltávolítása
A megoldás csak az Excel for Microsoft 365-ben működik
Mint azt bizonyára tudja, az Excel 365 rendelkezik egy speciális funkcióval, amely lehetővé teszi saját függvények létrehozását, beleértve a rekurzív számításokat is. Ez az új függvény a LAMBDA nevet kapta, és a fentebb linkelt oktatóanyagban teljes részletességgel megismerheti. Az alábbiakban néhány gyakorlati példával szemléltetem a koncepciót.
Egy egyéni LAMBDA funkció a nem kívánt karakterek eltávolítása a következő:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string)), string)))
Ahhoz, hogy ezt a funkciót használni tudja a munkalapjain, először el kell neveznie. Ehhez nyomja meg a Ctrl + F3 billentyűkombinációt, hogy megnyissa a Név Menedzser , majd definiálja a Új név így:
- A Név mezőben adja meg a funkció nevét: RemoveChars .
- Állítsa be a hatókörét Munkafüzet .
- A A következőkre vonatkozik mezőbe illessze be a fenti képletet.
- Választhatóan adja meg a paraméterek leírását a Megjegyzések A paraméterek akkor jelennek meg, amikor képletet ír be egy cellába.
- Kattintson a címre. OK az új funkció mentéséhez.
A részletes utasításokat lásd: Hogyan nevezzünk el egy egyéni LAMBDA-funkciót?
Miután a függvény nevet kapott, ugyanúgy hivatkozhat rá, mint bármely natív képletre.
A felhasználó szemszögéből nézve az egyéni függvényünk szintaxisa ilyen egyszerű:
RemoveChars(string, chars)Hol:
- String - az eredeti karakterlánc, vagy a karakterlánc(ok)at tartalmazó cellára/tartományra való hivatkozás.
- Chars - törlendő karakterek. Szöveges karakterlánc vagy cellahivatkozás formájában is megadható.
Az egyszerűség kedvéért nem kívánt karaktereket írunk be egy cellába, mondjuk D2-be. Ahhoz, hogy ezeket a karaktereket eltávolítsuk A2-ből, a képlet a következő:
=RemoveChars(A2, $D$2)
Ahhoz, hogy a képlet megfelelően működjön, kérjük, vegye figyelembe a következő dolgokat:
- A D2-ben a karakterek szóközök nélkül szerepelnek, kivéve, ha a szóközöket is ki akarja iktatni.
- A speciális karaktereket tartalmazó cella címét a $ jellel ($D$2) zárolja, hogy a hivatkozás ne változzon, amikor a képletet az alábbi cellákra másolja.
Ezután egyszerűen lefelé húzzuk a képletet, és a D2-ben felsorolt összes karaktert töröljük az A2-től A6-ig terjedő cellákból:
Ha több cellát szeretne egyetlen formulával tisztítani, adja meg az A2:A6 tartományt az 1. argumentumként:
=RemoveChars(A2:A6, D2)
Mivel a képletet csak a legfelső cellába írja be, nem kell aggódnia a cellakoordináták rögzítése miatt - a relatív hivatkozás (D2) ebben az esetben is működik. És a dinamikus tömbök támogatásának köszönhetően a képlet automatikusan átterjed az összes hivatkozott cellára:
Előre definiált karakterkészlet eltávolítása
Ha egy előre meghatározott karakterkészletet szeretne törölni több cellából, létrehozhat egy másik LAMBDA-t, amely meghívja a fő RemoveChars függvényt, és adja meg a nem kívánt karaktereket a 2. paraméterben. Például:
Törlés speciális karakterek , létrehoztunk egy egyéni függvényt, melynek neve RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@@^"))
A címre. számok eltávolítása szöveges karakterláncokból, létrehoztunk még egy függvényt, melynek neve RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Mindkét fenti függvény használata szuperegyszerű, mivel csak egy argumentumra van szükségük - az eredeti karakterláncra.
Megszüntetni speciális karakterek A2-ből a képlet a következő:
=RemoveSpecialChars(A2)
Csak törölni numerikus karakterek:
=RemoveNumbers(A2)
Hogyan működik ez a funkció:
Lényegében a RemoveChars függvény végigmegy a karakterek és egyszerre egy karaktert távolít el. Minden rekurzív hívás előtt az IF függvény ellenőrzi a fennmaradó karaktereket. Ha a karakterek string nem üres (chars""), a függvény önmagát hívja meg. Amint az utolsó karaktert is feldolgozta, a képlet visszaadja a következő értéket string a jelenlegi formáját és kilép.
A képlet részletes leírását lásd: Rekurzív LAMBDA a nem kívánt karakterek eltávolításához.
Speciális karakterek eltávolítása VBA-val
A funkciók az Excel minden verziójában működnek
Ha a LAMBDA függvény nem érhető el az Excelben, semmi sem akadályozza meg abban, hogy hasonló függvényt hozzon létre a VBA-val. A felhasználó által definiált függvény (UDF) kétféleképpen írható.
Egyéni funkció speciális karakterek törlésére rekurzív :
Ez a kód a fentebb tárgyalt LAMBDA függvény logikáját emulálja.
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 FunctionEgyéni funkció a speciális karakterek eltávolítására nem rekurzív :
Itt a nem kívánt karaktereket 1-től Len(chars)-ig végigjárjuk, és az eredeti karakterláncban talált karaktereket a semmivel helyettesítjük. A MID függvény egyenként húzza ki a nem kívánt karaktereket, és átadja őket a Replace függvénynek.
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 FunctionIllessze be a fenti kódok egyikét a munkafüzetbe a VBA-kód Excelbe illesztése című fejezetben leírtak szerint, és az egyéni függvény készen áll a használatra.
Hogy ne keverjük össze az új felhasználó által definiált függvényünket a Lambda által definiált függvénnyel, másképp neveztük el:
RemoveUnwantedChars(string, karakterek)Feltételezve, hogy az eredeti karakterlánc az A2-ben van, a nemkívánatos karakterek pedig a D2-ben, a következő képlet segítségével megszabadulhatunk tőlük:
= RemoveUnwantedChars(A2, $D$2)
Egyéni funkció keményen kódolt karakterekkel
Ha nem szeretne minden egyes képlethez speciális karaktereket megadni, akkor közvetlenül a kódban is megadhatja azokat:
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 FunctionKérjük, ne feledje, hogy a fenti kód csak demonstrációs célokat szolgál. Gyakorlati használathoz ügyeljen arra, hogy a következő sorban szerepeljen az összes törölni kívánt karakter:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Ennek az egyéni függvénynek a neve RemoveSpecialChars és csak egy argumentumot igényel - az eredeti karakterláncot:
RemoveSpecialChars(string)A speciális karakterek eltávolításához az adatállományunkból a képlet a következő:
=RemoveSpecialChars(A2)
Nem nyomtatható karakterek eltávolítása Excelben
A Microsoft Excel rendelkezik egy speciális funkcióval a nem nyomtatott karakterek törlésére - a CLEAN funkcióval. Gyakorlatilag a 7 bites ASCII-készlet első 32 karakterét távolítja el (kódok 0-tól 31-ig).
Például, a következők törléséhez nem nyomtatható karakterek A2-ből, itt van a használandó képlet:
=CLEAN(A2)
Ezáltal a nem nyomtatott karakterek eltűnnek, de a szöveg előtti/utáni és a szavak közötti szóközök megmaradnak.
Megszabadulni a extra helyek , csomagolja a CLEAN képletet a TRIM funkcióba:
=TRIM(CLEAN(A2))
Mostantól az összes elő- és utólagos szóközt eltávolítjuk, míg a szóközök között egyetlen szóköz karakterre csökkentjük:
Ha teljesen törölni szeretné minden helyiség egy karakterláncon belül, akkor a szóköz karaktert (32-es kódszám) egy üres karakterlánccal helyettesíti:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Néhány szóköz vagy más láthatatlan karakter még mindig a munkalapon marad? Ez azt jelenti, hogy ezek a karakterek különböző értékekkel rendelkeznek az Unicode karakterkészletben.
Például a karakterkód egy nem törés nélküli szóköz ( ) 160, és ezzel a képlettel tisztíthatod meg:
=SUBSTITUTE(A2, CHAR(160)," ")
Törölni egy meghatározott nem nyomtatott karakter , először meg kell találnia a kódértékét. A részletes utasításokat és képletpéldákat itt találja: Hogyan távolítsunk el egy adott nem nyomtatott karaktert.
Speciális karakterek törlése az Ultimate Suite segítségével
Támogatja az Excel for Microsoft 365, Excel 2019 - 2010 programokat
Ebben az utolsó példában megmutatom, hogyan lehet a legegyszerűbben eltávolítani a speciális karaktereket az Excelben. Az Ultimate Suite telepítésével ezt kell tennie:
- A Ablebits adatok lapon, a Szöveg csoport, kattintson a Távolítsa el a > Karakterek eltávolítása .
Egy pillanat alatt tökéletes eredményt kap:
Ha valami rosszul sül el, ne aggódjon - a munkalap egy biztonsági másolata automatikusan létrejön, ahogy a Biztonsági mentés a munkalapon doboz alapértelmezés szerint be van jelölve.
Kíváncsi vagy, hogy kipróbálhatod-e az Eltávolító eszközünket? A link a tesztelési verzióhoz alább található. Köszönöm, hogy elolvastad, és remélem, jövő héten találkozunk a blogunkon!
Elérhető letöltések
Speciális karakterek törlése - példák (.xlsm fájl)
Ultimate Suite - próbaverzió (.exe fájl)