Sisällysluettelo
Tässä artikkelissa opit poistamaan tiettyjä merkkejä tekstijonosta ja poistamaan ei-toivottuja merkkejä useista soluista kerralla.
Kun tuot tietoja Exceliin jostain muualta, työarkkeihisi saattaa siirtyä paljon erikoismerkkejä. Vielä turhauttavampaa on se, että jotkin merkit ovat näkymättömiä, mikä tuottaa ylimääräistä valkoista tilaa ennen, jälkeen tai sisällä tekstijonoja. Tämä opetusohjelma tarjoaa ratkaisut kaikkiin näihin ongelmiin, jolloin säästyt siltä, että sinun on käytävä tiedot solu solulta läpi ja puhdistettava ei-toivotut merkit.merkit käsin.
Poista erikoismerkki Excel-solusta
Jos haluat poistaa tietyn merkin solusta, korvaa se tyhjällä merkkijonolla käyttämällä SUBSTITUTE-funktiota sen yksinkertaisimmassa muodossa:
SUBSTITUTE( solu , char , "")Esimerkiksi kysymysmerkin poistamiseksi A2:sta B2:n kaava on seuraava:
=SUBSTITUTE(A2, "?", "")
Jos haluat poistaa merkin, jota ei ole näppäimistölläsi, voit kopioida/liimata sen kaavaan alkuperäisestä solusta.
Esimerkiksi näin pääset eroon käänteisestä kysymysmerkistä:
=SUBSTITUTE(A2, "¿", "")
Mutta jos ei-toivottu merkki on näkymätön tai se ei kopioidu oikein, miten se laitetaan kaavaan? Etsi sen koodinumero yksinkertaisesti CODE-toiminnolla.
Tapauksessamme ei-toivottu merkki ("¿") on viimeisenä solussa A2, joten käytämme CODE- ja RIGHT-funktioiden yhdistelmää sen yksilöllisen koodiarvon, joka on 191, hakemiseen:
=CODE(RIGHT(A2))
Kun olet saanut merkin koodin, käytä vastaavaa CHAR-funktiota yllä olevaan yleiseen kaavaan. Meidän tietokokonaisuutemme osalta kaava on seuraava:
=SUBSTITUTE(A2, CHAR(191),"")
Huomautus: SUBSTITUTE-toiminto on case-sensitive eli se käsittelee pieniä ja isoja kirjaimia eri merkkeinä. Pidä tämä mielessä, jos ei-toivottu merkki on kirjain.
Useiden merkkien poistaminen merkkijonosta
Eräässä aiemmassa artikkelissa tarkastelimme, miten Excelissä voidaan poistaa tiettyjä merkkejä merkkijonoista yhdistämällä useita SUBSTITUTE-funktioita toisiinsa. Samaa lähestymistapaa voidaan käyttää kahden tai useamman ei-toivotun merkin poistamiseen kerralla:
KORVAAVA(KORVAAVA(KORVAAVA( solu , char1 , ""), char2 , ""), char3 , "")Jos haluat esimerkiksi poistaa normaalit huuto- ja kysymysmerkit sekä käänteiset huuto- ja kysymysmerkit A2-kielisessä merkkijonossa, käytä tätä kaavaa:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", ""), "")
Sama voidaan tehdä CHAR-toiminnon avulla, jossa 161 on merkkikoodi "¡" ja 191 on merkkikoodi "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Sisäkkäiset SUBSTITUTE-funktiot toimivat hyvin kohtuulliselle määrälle merkkejä, mutta jos poistettavia merkkejä on kymmeniä, kaavasta tulee liian pitkä ja vaikeasti hallittava. Seuraava esimerkki osoittaa kompaktimman ja tyylikkäämmän ratkaisun.
Poista kaikki ei-toivotut merkit kerralla
Ratkaisu toimii vain Microsoft 365:n Excelissä
Kuten luultavasti tiedät, Excel 365:ssä on erityinen funktio, jonka avulla voit luoda omia funktioita, myös rekursiivisesti laskettavia funktioita. Tämä uusi funktio on nimeltään LAMBDA, ja löydät siitä tarkemmat tiedot edellä linkitetystä opetusohjelmasta. Seuraavassa havainnollistan konseptia muutamalla käytännön esimerkillä.
Mukautettu LAMBDA-toiminto poistaa ei-toivotut merkit on seuraava:
=LAMBDA(merkkijono, merkit, IF(merkit"", RemoveChars(SUBSTITUTE(merkkijono, LEFT(merkit, 1), ""), RIGHT(merkit, LEN(merkit) -1))), merkkijono)))
Jotta voit käyttää tätä toimintoa työarkissasi, sinun on ensin nimettävä se. Avaa tätä varten Ctrl + F3 painamalla Ctrl + F3 avataksesi Nimi Manager ja määrittele sitten a Uusi nimi tällä tavalla:
- Vuonna Nimi ruutuun toiminnon nimi: RemoveChars .
- Aseta laajuus Työkirja .
- Vuonna Viittaa ruutuun, liitä yllä oleva kaava.
- Voit halutessasi kirjoittaa parametrien kuvauksen kenttään Kommentit Parametrit näytetään, kun kirjoitat kaavan soluun.
- Klikkaa OK tallentaaksesi uuden toiminnon.
Yksityiskohtaiset ohjeet löydät kohdasta Miten nimetä mukautettu LAMBDA-toiminto.
Kun funktiolle on annettu nimi, voit viitata siihen kuten mihin tahansa natiivikaavaan.
Käyttäjän näkökulmasta mukautetun funktiomme syntaksi on näin yksinkertainen:
RemoveChars(string, chars)Missä:
- merkkijono - on alkuperäinen merkkijono tai viittaus soluun/alueeseen, jossa merkkijono(t) on.
- Merkit - poistettavat merkit. Voidaan esittää tekstijonona tai soluviitteenä.
Syötämme epätoivottuja merkkejä johonkin soluun, vaikkapa D2:een. Poistamme nämä merkit A2:sta seuraavalla kaavalla:
=RemoveChars(A2, $D$2)
Jotta kaava toimisi oikein, ota huomioon seuraavat asiat:
- D2:ssa merkit luetellaan ilman välilyöntejä, ellet halua poistaa myös välilyöntejä.
- Erikoismerkit sisältävän solun osoite lukitaan $-merkillä ($D$2), jotta viittaus ei muutu, kun kaavaa kopioidaan alla oleviin soluihin.
Sitten vedämme kaavaa alaspäin ja poistamme kaikki D2:ssa luetellut merkit soluista A2-A6:
Jos haluat puhdistaa useita soluja yhdellä kaavalla, anna 1. argumentiksi alue A2:A6:
=RemoveChars(A2:A6, D2)
Koska kaava syötetään vain ylimpään soluun, sinun ei tarvitse huolehtia solukoordinaattien lukitsemisesta - suhteellinen viittaus (D2) toimii tässä tapauksessa hyvin. Ja koska kaava tukee dynaamisia taulukoita, kaava leviää automaattisesti kaikkiin viitattuihin soluihin:
Ennalta määritetyn merkistöjoukon poistaminen
Jos haluat poistaa ennalta määritetyn merkkijoukon useista soluista, voit luoda toisen LAMBDAn, joka kutsuu pääkomentoa RemoveChars toimintoa ja määritä ei-toivotut merkit 2. parametrissa. Esimerkiksi:
Poistaminen erikoismerkit , olemme luoneet mukautetun funktion nimeltä RemoveSpecialChars :
=LAMBDA(merkkijono, RemoveChars(merkkijono, "?¿!¡*%#@^")))
Osoitteeseen poistaa numerot tekstijonoista, olemme luoneet vielä yhden funktion nimeltä RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789")))
Molemmat edellä mainitut funktiot ovat erittäin helppokäyttöisiä, sillä ne vaativat vain yhden argumentin - alkuperäisen merkkijonon.
Poistaa erikoismerkit A2:sta, kaava on:
=RemoveSpecialChars(A2)
Poistaa vain numeeriset merkit:
=RemoveNumbers(A2)
Miten tämä toiminto toimii:
Pohjimmiltaan RemoveChars toiminto käy läpi listan merkit ja poistaa yhden merkin kerrallaan. Ennen jokaista rekursiivista kutsua IF-funktio tarkastaa jäljellä olevat merkit. Jos merkit merkkijono ei ole tyhjä (chars""), funktio kutsuu itseään. Heti kun viimeinen merkki on käsitelty, kaava palauttaa arvon merkkijono sen nykyisessä muodossaan ja poistuu.
Yksityiskohtaisen kaavan erittelyn löydät kohdasta Rekursiivinen LAMBDA ei-toivottujen merkkien poistamiseksi.
Erikoismerkkien poistaminen VBA:lla
Toiminnot toimivat kaikissa Excel-versioissa
Jos LAMBDA-funktio ei ole käytettävissä Excelissäsi, mikään ei estä sinua luomasta vastaavaa funktiota VBA:lla. Käyttäjän määrittelemä funktio (UDF) voidaan kirjoittaa kahdella tavalla.
Mukautettu toiminto erikoismerkkien poistamiseksi rekursiivinen :
Tämä koodi jäljittelee edellä käsitellyn LAMBDA-funktion logiikkaa.
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 FunctionMukautettu toiminto erikoismerkkien poistamiseksi ei-rekursiivinen :
Tässä käydään läpi ei-toivotut merkit 1:stä Len(chars):iin ja korvataan alkuperäisestä merkkijonosta löytyneet merkit tyhjillä. MID-funktio poimii ei-toivotut merkit yksi kerrallaan ja siirtää ne Replace-funktiolle.
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 FunctionLisää yksi edellä mainituista koodeista työkirjaasi, kuten kohdassa VBA-koodin lisääminen Exceliin selitetään, ja mukautettu funktio on valmis käytettäväksi.
Jotta emme sekoittaisi uutta käyttäjän määrittelemäämme funktiota Lambdan määrittelemään funktioon, olemme nimenneet sen eri tavalla:
Jos oletetaan, että alkuperäinen merkkijono on A2:ssa ja ei-toivotut merkit D2:ssa, voimme päästä niistä eroon tämän kaavan avulla:
= RemoveUnwantedChars(A2, $D$2)
Mukautettu toiminto, jossa on kovakoodattuja merkkejä
Jos et halua vaivautua antamaan erikoismerkkejä jokaista kaavaa varten, voit määrittää ne suoraan koodissa:
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 FunctionMuista, että yllä oleva koodi on vain esittelyä varten. Käytännön käyttöä varten muista sisällyttää kaikki poistettavat merkit seuraavalle riville:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Tämän mukautetun funktion nimi on RemoveSpecialChars ja se vaatii vain yhden argumentin - alkuperäisen merkkijonon:
RemoveSpecialChars(string)Jos haluamme poistaa erikoismerkit tietokannastamme, kaava on seuraava:
=RemoveSpecialChars(A2)
Poista ei-tulostettavat merkit Excelissä
Microsoft Excelissä on erityinen toiminto, jolla voidaan poistaa tulostamattomat merkit - CLEAN-toiminto. Teknisesti se poistaa 7-bittisen ASCII-joukon ensimmäiset 32 merkkiä (koodit 0-31).
Jos haluat esimerkiksi poistaa ei-tulostettavat merkit A2:sta, tässä on käytettävä kaavaa:
=CLEAN(A2)
Tämä poistaa painamattomat merkit, mutta välilyönnit ennen/jälkeen tekstiä ja sanojen väliin jäävät.
Päästä eroon ylimääräiset tilat , kääri CLEAN-kaava TRIM-toimintoon:
=TRIM(CLEAN(A2))
Nyt kaikki etu- ja jälkimmäiset välilyönnit on poistettu, ja välilyöntien välissä olevat välilyönnit on vähennetty yhdeksi välilyönti-merkiksi:
Jos haluat poistaa ehdottomasti kaikki tilat merkkijonon sisällä, korvaa lisäksi välilyönti (koodinumero 32) tyhjällä merkkijonolla:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), "" ))))
Joitakin välilyöntejä tai muita näkymättömiä merkkejä on yhä jäljellä työarkissasi? Se tarkoittaa, että näillä merkeillä on eri arvot Unicode-merkistöissä.
Esimerkiksi merkkikoodi katkomaton välilyönti ( ) on 160, ja voit puhdistaa sen tämän kaavan avulla:
=SUBSTITUTE(A2, CHAR(160)," ")
Poistaaksesi tietty ei-tulostettava merkki Yksityiskohtaiset ohjeet ja kaavaesimerkit löytyvät täältä: Miten poistaa tietty painamaton merkki.
Erikoismerkkien poistaminen Ultimate Suite -ohjelmalla
Tukee Excel for Microsoft 365, Excel 2019 - 2010
Tässä viimeisessä esimerkissä näytän sinulle helpoimman tavan poistaa erikoismerkit Excelissä. Kun Ultimate Suite on asennettu, sinun on tehtävä näin:
- On Ablebits Data välilehdellä, kohdassa Teksti ryhmää, klikkaa Poista > Poista merkkejä .
Hetken kuluttua saat täydellisen tuloksen:
Jos jokin menee pieleen, älä huoli - varmuuskopio työarkistasi luodaan automaattisesti, kun työkalun Varmuuskopioi tämä laskentataulukko ruutu on oletusarvoisesti valittuna.
Oletko utelias kokeilemaan Poista-työkalua? Linkki kokeiluversioon on aivan alla. Kiitän sinua lukemisesta ja toivottavasti tapaamme blogissamme ensi viikolla!
Saatavilla olevat lataukset
Erikoismerkkien poistaminen - esimerkkejä (.xlsm-tiedosto)
Ultimate Suite - kokeiluversio (.exe-tiedosto)