Hogyan lehet törölni a speciális / nem kívánt karaktereket az Excelben?

  • Ossza Meg Ezt
Michael Brown

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:

    1. A Név mezőben adja meg a funkció nevét: RemoveChars .
    2. Állítsa be a hatókörét Munkafüzet .
    3. A A következőkre vonatkozik mezőbe illessze be a fenti képletet.
    4. 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.
    5. 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 Function

    Egyé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 Function

    Illessze 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 Function

    Ké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:

    1. A Ablebits adatok lapon, a Szöveg csoport, kattintson a Távolítsa el a > Karakterek eltávolítása .

  • A beépülő modul ablaktábláján válassza ki a forrás tartományt, válassza ki a Karakterkészletek eltávolítása és válassza ki a kívánt opciót a legördülő listából ( Szimbólumok & írásjelek ebben a példában).
  • Nyomd meg a Távolítsa el a gomb.
  • 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)

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.