Sisukord
Selles artiklis saate teada, kuidas kustutada konkreetseid sümboleid tekstist ja eemaldada soovimatuid sümboleid mitmest lahtrist korraga.
Andmete importimisel Excelisse kusagilt mujalt võib teie töölehtedele kanduda terve hulk erimärke. Veelgi tüütum on see, et mõned märgid on nähtamatud, mis tekitab lisavaba ruumi enne, pärast või teksti stringide sees. See õpetus pakub lahendusi kõigile neile probleemidele, säästes teid sellest, et peate lahtrite kaupa andmeid läbi käima ja soovimatuid märkmeid puhastama.tähemärgid käsitsi.
Erimärgi eemaldamine Exceli lahtrist
Konkreetse tähemärgi kustutamiseks lahtrist asendage see tühja stringiga, kasutades funktsiooni SUBSTITUTE selle lihtsaimal kujul:
SUBSTITUTE( rakk , char , "")Näiteks küsimärgi kustutamiseks A2-st on valem B2-s järgmine:
=SUBSTITUTE(A2, "?", "")
Klaviatuuril puuduva tähemärgi eemaldamiseks saate selle algsest lahtrist valemisse kopeerida/liita.
Siin on näiteks, kuidas saad vabaneda ümberpööratud küsimärgist:
=SUBSTITUTE(A2, "¿", "")
Aga kui soovimatu tegelane on nähtamatu või ei kopeeri õigesti, siis kuidas seda valemisse panna? Lihtsalt, leia selle koodinumber, kasutades funktsiooni CODE.
Meie puhul on soovimatu märk ("¿") lahtris A2 viimasena, seega kasutame funktsioonide CODE ja RIGHT kombinatsiooni, et saada selle unikaalne koodväärtus, mis on 191:
=CODE(RIGHT(A2))
Kui olete saanud tähemärgi koodi, siis kasutage ülaltoodud üldisele valemile vastavat CHAR-funktsiooni. Meie andmekogumi puhul on valem järgmine:
=SUBSTITUTE(A2, CHAR(191),"")
Märkus. Funktsioon SUBSTITUTE on suur- ja väiketähelepanu , mis tähendab, et see käsitleb väikseid ja suuri tähti erinevate tähtedena. Palun pidage seda meeles, kui teie soovimatu täht on täht.
Mitme tähemärgi kustutamine stringist
Ühes eelmises artiklis vaatlesime, kuidas eemaldada Excelis stringidest teatud tähemärke, pesitsedes mitu SUBSTITUTE-funktsiooni üksteise sisse. Sama lähenemisviisi saab kasutada kahe või enama soovimatu tähemärgi eemaldamiseks korraga:
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( rakk , char1 , ""), char2 , ""), char3 , "")Näiteks tavaliste hüüde- ja küsimärkide ning ümberpööratud hüüumärkide kustutamiseks A2 tekstisõnast, kasutage seda valemit:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", ""), "¿", "")
Sama saab teha funktsiooni CHAR abil, kus 161 on "¡" tähise kood ja 191 on "¿" tähise kood:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Sisestatud SUBSTITUTE funktsioonid töötavad hästi mõistliku arvu märkide puhul, kuid kui teil on kümneid märke, mida eemaldada, muutub valem liiga pikaks ja raskesti hallatavaks. Järgmine näide näitab kompaktsemat ja elegantsemat lahendust.
Eemaldage kõik soovimatud märgid korraga
Lahendus töötab ainult Microsoft 365 Exceli jaoks
Nagu te ilmselt teate, on Excel 365-s spetsiaalne funktsioon, mis võimaldab teil luua oma funktsioone, sealhulgas selliseid, mis arvutavad rekursiivselt. Selle uue funktsiooni nimi on LAMBDA ja selle kohta leiate kõik üksikasjad eespool lingitud õpetusest. Järgnevalt illustreerin kontseptsiooni paari praktilise näitega.
Kohandatud LAMBDA funktsioon, et eemaldada soovimatud tähemärgid on järgmine:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1))), string)))
Et seda funktsiooni saaksite oma töölehtedel kasutada, peate sellele kõigepealt nime andma. Selleks vajutage Ctrl + F3, et avada funktsioonile Nimi Manager ja seejärel määratleda Uus nimi sel viisil:
- In the Nimi sisestage funktsiooni nimi: RemoveChars .
- Seadke reguleerimisala Töövihik .
- In the Viitab kasti, kleepige ülaltoodud valem.
- Valikuliselt sisestage parameetrite kirjeldus lahtrisse Kommentaarid parameetrid kuvatakse, kui sisestate lahtrisse valemi.
- Klõpsake OK et salvestada oma uus funktsioon.
Üksikasjalikud juhised leiate jaotisest Kuidas anda kohandatud LAMBDA-funktsioonile nimi.
Kui funktsioonile on antud nimi, saate sellele viidata nagu igale algupärasele valemile.
Kasutaja seisukohalt on meie kohandatud funktsiooni süntaks nii lihtne:
RemoveChars(string, chars)Kus:
- String - on algne string või viide stringi(d) sisaldavale lahtrisse/vahemikule.
- Tähed - kustutatavad tähemärgid. Võib esitada tekstijada või lahtriviide.
Mugavuse huvides sisestame soovimatud tähemärgid mõnda lahtrisse, näiteks D2. Nende tähemärkide eemaldamiseks A2-st on valem:
=RemoveChars(A2, $D$2)
Et valem töötaks õigesti, võtke palun arvesse järgmisi asju:
- D2-s on tähemärgid loetletud ilma tühikuteta, kui te ei soovi ka tühikuid kõrvaldada.
- Erimärke sisaldava lahtri aadress on lukustatud $-märgiga ($D$2), et vältida viide muutumist, kui valemit kopeeritakse allolevatesse lahtritesse.
Ja siis me lihtsalt lohistame valemi alla ja kustutame kõik D2-s loetletud tähemärgid lahtritest A2 kuni A6:
Mitme lahtri puhastamiseks ühe valemiga, esitage 1. argumendiks vahemik A2:A6:
=RemoveChars(A2:A6, D2)
Kuna valem sisestatakse ainult kõige ülemisse lahtrisse, ei ole vaja muretseda lahtri koordinaatide lukustamise pärast - suhteline viide (D2) töötab sellisel juhul hästi. Ja tänu dünaamiliste massiividega seotud toetusele laieneb valem automaatselt kõikidesse viidatud lahtritesse:
Eelnevalt määratud tähemärkide kogumi eemaldamine
Et kustutada eelnevalt määratud tähemärkide kogum mitmest lahtrist, võite luua teise LAMBDA, mis kutsub peamist RemoveChars funktsiooni ja täpsustage soovimatud tähemärgid 2. parameetris. Näiteks:
Kustutada erimärgid oleme loonud kohandatud funktsiooni nimega RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^^"))
aadressile eemaldada numbrid tekstistringidest, oleme loonud veel ühe funktsiooni nimega RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Mõlemat ülaltoodud funktsiooni on väga lihtne kasutada, sest nad vajavad ainult ühte argumenti - algset stringi.
Et kõrvaldada erimärgid alates A2, valem on:
=RemoveSpecialChars(A2)
Kustutada ainult numbrilised märgid:
=RemoveNumbers(A2)
Kuidas see funktsioon töötab:
Sisuliselt on RemoveChars funktsioon läbib nimekirja märgid ja eemaldab ühe tähemärgi korraga. Enne iga rekursiivset üleskutset kontrollib IF-funktsioon järelejäänud tähti. Kui märgid string ei ole tühi (märgid""), kutsub funktsioon iseennast. Niipea, kui viimane märk on töödeldud, tagastab valemiga string see oma praegusel kujul ja väljub.
Üksikasjalik valemite lahtikirjutamine on esitatud dokumendis Recursive LAMBDA to remove unwanted characters (Rekursiivne LAMBDA soovimatute tähemärkide eemaldamiseks).
Erimärkide eemaldamine VBA abil
Funktsioonid töötavad kõigis Exceli versioonides
Kui LAMBDA funktsioon ei ole teie Excelis saadaval, ei takista miski teid loomast sarnast funktsiooni VBA abil. Kasutajamääratletud funktsiooni (UDF) saab kirjutada kahel viisil.
Kohandatud funktsioon erimärkide kustutamiseks rekursiivne :
See kood emuleerib eespool käsitletud LAMBDA funktsiooni loogikat.
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 FunctionKohandatud funktsioon erimärkide eemaldamiseks mitte-rekursiivne :
Siin käime soovimatuid märke läbi 1 kuni Len(chars) ja asendame algses stringis leitud märgid tühja. MID-funktsioon tõmbab soovimatud märgid ükshaaval välja ja edastab need funktsioonile Replace.
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 FunctionSisestage üks ülaltoodud koodidest oma töövihikusse, nagu on selgitatud peatükis Kuidas sisestada VBA-koodi Excelis, ja teie kohandatud funktsioon on kasutamiseks valmis.
Et mitte segi ajada meie uut kasutaja defineeritud funktsiooni Lambda-defineeritud funktsiooniga, nimetasime seda teisiti:
RemoveUnwantedChars(string, chars)Eeldades, et algne string on A2-s ja soovimatud märgid D2-s, saame neist vabaneda selle valemiga:
= RemoveUnwantedChars(A2, $D$2)
Kohandatud funktsioon kõvakooditud märkidega
Kui te ei soovi iga valemi jaoks erimärkide esitamisega vaeva näha, võite need otse koodis määrata:
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 FunctionPidage meeles, et ülaltoodud kood on demonstratiivne. Praktilise kasutamise jaoks lisage kindlasti kõik märgid, mida soovite kustutada, järgmisesse reasse:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Selle kohandatud funktsiooni nimi on RemoveSpecialChars ja see nõuab ainult ühte argumenti - algset stringi:
RemoveSpecialChars(string)Erimärkide eemaldamiseks meie andmestikust on valem järgmine:
=RemoveSpecialChars(A2)
Eemaldage Excelis trükkimata tähemärgid
Microsoft Excelil on spetsiaalne funktsioon trükkimata märkide kustutamiseks - funktsioon CLEAN. Tehniliselt eemaldab see 7-bitise ASCII-komplekti esimesed 32 märki (koodid 0 kuni 31).
Näiteks, et kustutada mittetrükitavad tähemärgid A2-st, siin on valem, mida kasutada:
=CLEAN(A2)
See kõrvaldab trükkimata tähemärgid, kuid tühikud enne ja pärast teksti ning sõnade vahele jäävad.
Et vabaneda lisaruumid , mähkige CLEAN valem TRIM funktsiooniga:
=TRIM(CLEAN(A2))
Nüüd eemaldatakse kõik ees- ja tagapool olevad tühikud, samas kui vahepealsed tühikud vähendatakse ühe tühikuga:
Kui soovite kustutada absoluutselt kõik ruumid stringi sees, siis asendage lisaks tühiku märk (koodnumber 32) tühja stringiga:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Teie töölehele on jäänud mõned tühikud või muud nähtamatud märgid? See tähendab, et need märgid on Unicode'i märgikomplektis erineva väärtusega.
Näiteks tähemärkide kood mittekatkendav tühik ( ) on 160 ja seda saab puhastada selle valemi abil:
=SUBSTITUTE(A2, CHAR(160)," ")
Et kustutada konkreetne mittetrükitav märk , peate kõigepealt leidma selle koodiväärtuse. Üksikasjalikud juhised ja valemite näited on siin: Kuidas eemaldada konkreetne mittetrükitav märk.
Erimärkide kustutamine Ultimate Suite'iga
Toetab Exceli Microsoft 365, Excel 2019 - 2010 jaoks
Viimases näites näitan teile kõige lihtsamat viisi erimärkide eemaldamiseks Excelis. Kui Ultimate Suite on paigaldatud, tuleb teha järgmist:
- On Ablebits andmed vahekaardil Tekst rühma, klõpsake Eemaldage > Eemaldage tähemärgid .
Kohe saad täiusliku tulemuse:
Kui midagi läheb valesti, siis ärge muretsege - teie töölehe varukoopia luuakse automaatselt, kuna Tagasi see tööleht on vaikimisi valitud.
Soovite proovida meie eemaldamise tööriista? Link hindamisversioonile on kohe allpool. Tänan teid lugemise eest ja loodan, et näeme teid järgmisel nädalal meie blogis!
Saadaolevad allalaadimised
Erimärkide kustutamine - näited (.xlsm fail)
Ultimate Suite - prooviversioon (.exe fail)