Teksti eemaldamine enne, pärast või kahe tähemärgi vahel Excelis

  • Jaga Seda
Michael Brown

Viimase paari artikli jooksul oleme vaadelnud erinevaid viise, kuidas eemaldada tähemärke stringidest Excelis. Täna uurime veel ühte kasutusjuhtumit - kuidas kustutada kõik enne või pärast konkreetset märki.

    Teksti kustutamine enne, pärast või kahe tähemärgi vahel Find & Replace abil

    Mitme lahtri andmete manipuleerimiseks on Find and Replace õige tööriist. Konkreetse tähemärgi ees või järel oleva stringi osa eemaldamiseks tuleb teha järgmised toimingud:

    1. Valige kõik lahtrid, kust soovite teksti kustutada.
    2. Vajutage Ctrl + H, et avada Leia ja asenda dialoog.
    3. In the Leia, mida sisestage üks järgmistest kombinatsioonidest:
      • Teksti kõrvaldamiseks enne antud märki , sisestage märk, mille ees on tärn (*char).
      • Teksti eemaldamine pärast teatavat märki , sisestage märk, millele järgneb tärn (char*).
      • Alamstringi kustutamine kahe tegelase vahel , sisestage tärn, mida ümbritsevad 2 märki (char*char).
    4. Jäta Asendage koos kast tühi.
    5. Klõpsake Asendage kõik .

    Näiteks, et eemaldada kõik pärast koma kaasa arvatud koma ise, pane koma ja tärnimärk (,*) sisse. Leia, mida kasti ja saate järgmise tulemuse:

    Alamstringi kustutamine enne koma , sisestage tärn, koma ja tühik (*, ) lahtrisse Leia, mida kast.

    Pange tähele, et me ei asenda mitte lihtsalt koma, vaid koma ja tühik et vältida juhtivaid tühikuid tulemustes. Kui teie andmed on eraldatud komadega ilma tühikuta, siis kasutage tärni, millele järgneb koma (*,).

    Teksti kustutamine kahe koma vahel , kasutage tärni, mida ümbritsevad komad (,*,).

    Vihje. Kui soovite, et nimed ja telefoninumbrid oleksid pigem komaga eraldatud, siis kirjutage koma (,) lahtrisse Asendage valdkond.

    Eemalda osa tekstist, kasutades Flash Fill

    Exceli kaasaegsetes versioonides (2013 ja uuemad) on veel üks lihtne viis konkreetse tähemärgi ees või järel oleva teksti kustutamiseks - Flash Fill'i funktsioon. See toimib järgmiselt:

    1. Kirjutage esimese lahtri kõrval asuvasse lahtrisse oma andmed, sisestage oodatav tulemus ja vajutage Enter .
    2. Alustage sobiva väärtuse sisestamist järgmisesse lahtrisse. Kui Excel tunneb sisestatavate väärtuste mustrit, kuvab ta eelvaate ülejäänud lahtritele, mis järgivad sama mustrit.
    3. Ettepaneku vastuvõtmiseks vajutage Enter-klahvi.

    Valmis!

    Teksti eemaldamine valemite abil

    Microsoft Excelis saab paljusid sisseehitatud funktsioonide abil tehtud andmemanipulatsioone teostada ka valemiga. Erinevalt eelmistest meetoditest ei tee valemid algandmetes mingeid muudatusi ja annavad teile suurema kontrolli tulemuste üle.

    Kuidas eemaldada kõik pärast konkreetset märki

    Teksti kustutamiseks pärast kindlat märki on üldine valem:

    LEFT( rakk , SEARCH(" char ", rakk ) -1)

    Siin kasutame funktsiooni SEARCH, et saada tähemärgi asukoht ja anda see edasi funktsioonile LEFT, nii et see ekstraheerib vastava arvu tähemärke stringi algusest. SEARCHi poolt tagastatud arvust lahutatakse üks tähemärk, et jätta eraldaja tulemustest välja.

    Näiteks, et eemaldada osa stringist pärast koma, sisestate allpool esitatud valemi B2 ja lohistate selle alla kuni B7:

    =LEFT(A2, SEARCH(",", A2) -1)

    Kuidas eemaldada kõik enne konkreetset märki

    Tekstijada osa kustutamiseks enne teatud märki on üldine valem:

    ÕIGUS( rakk , LEN( rakk ) - SEARCH(" char ", rakk ))

    Siinkohal arvutame jällegi SEARCHi abil sihtmärgi asukoha, lahutame selle LENi poolt tagastatud stringi kogupikkusest ja anname vahe funktsioonile RIGHT, nii et see tõmbab stringi lõpust välja nii palju tähemärke.

    Näiteks, et eemaldada tekst enne koma, on valem:

    =RIGHT(A2, LEN(A2) - SEARCH(",", A2))

    Meie puhul järgneb komale tühik. Et vältida tulemustes eesolevaid tühikuid, mähime põhivalemi TRIM-funktsiooniga:

    =TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))

    Märkused:

    • Mõlemad ülaltoodud näited eeldavad, et on olemas ainult üks instants Kui on mitu esinemist, siis eemaldatakse tekst enne/järgmisel korral tekst enne/järgmisel korral esimene instants .
    • Funktsioon SEARCH on ei sõltu suur- ja väiketähendusest , mis tähendab, et see ei tee vahet väikeste ja suurte tähtede vahel. Kui teie konkreetne märk on täht ja te soovite eristada tähe suurust, siis kasutage funktsiooni suur- ja väiketähelepanu FIND funktsioon SEARCH asemel.

    Kuidas kustutada teksti pärast N-ndat tähemärgi esinemist

    Olukorras, kus lähtekriips sisaldab mitut eraldusjooni, võib tekkida vajadus eemaldada tekst pärast konkreetset piirjooni. Selleks kasutage järgmist valemit:

    LEFT( rakk , FIND("#", SUBSTITUTE( rakk , " char ", "#", n )) -1)

    Kus n on tähemärgi esinemine, mille järel tekst eemaldatakse.

    Selle valemi sisemine loogika nõuab, et kasutataks mingit märki, mida lähteandmetes kuskil ei esine, meie puhul hash-sümboli (#). Kui see märk esineb teie andmekogumis, siis kasutage "#" asemel midagi muud.

    Näiteks, et eemaldada kõik pärast A2-i 2. koma (ja koma ise), on valem järgmine:

    =LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)

    Kuidas see valem töötab:

    Valemi võtmeosa on funktsioon FIND, mis arvutab n-ndama eraldaja (meie puhul koma) positsiooni. Siin on kirjas, kuidas:

    Asendame A2-s oleva 2. koma hash-sümboliga (või mis tahes muu märgiga, mida teie andmetes ei ole) SUBSTITUTE'i abil:

    SUBSTITUTE(A2, ",", "#", 2)

    Saadud string läheb FIND-i 2. argumendiks, nii et see leiab "#" positsiooni selles stringis:

    FIND("#", "Emma, Design# (102) 123-4568")

    FIND ütleb meile, et "#" on 13. märk stringis. Et teada saada sellele eelnevate märkide arvu, tuleb lihtsalt lahutada 1 ja tulemuseks on 12:

    FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1

    See number läheb otse num_chars argument LEFT, paludes tal tõmmata esimesed 12 märki A2-st:

    =LEFT(A2, 12)

    See on kõik!

    Kuidas kustutada teksti enne N-ndat tähemärgi esinemist

    Üldine valem, et eemaldada alamjada enne teatud märki, on:

    RIGHT(SUBSTITUTE( rakk , " char ", "#", n ), LEN( rakk ) - FIND("#", SUBSTITUTE( rakk , " char ", "#", n )) -1)

    Näiteks, et eemaldada tekst enne teist koma A2-st, on valem järgmine:

    =RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)

    Esialgse tühiku kõrvaldamiseks kasutame taas funktsiooni TRIM, mis on pakkimisfunktsiooniks:

    =TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))

    Kuidas see valem töötab:

    Kokkuvõttes selgitame välja, mitu märki on pärast n-ndat piirajat ja eraldame paremalt vastava pikkusega alamjada. Allpool on valemite lahtikirjutamine:

    Kõigepealt asendame A2-s oleva 2. koma hash-sümboliga:

    SUBSTITUTE(A2, ",", "#", 2)

    Saadud string läheb aadressile tekst Õiguse argument:

    RIGHT("Emma, Design# (102) 123-4568", ...

    Järgmisena peame määrama, mitu märki stringi lõpust välja võtta. Selleks leiame hash-sümboli positsiooni ülaltoodud stringis (mis on 13):

    FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    Ja lahutage see kogu stringi pikkusest (mis on 28):

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    Erinevus (15) läheb RIGHT-i teisele argumendile, andes talle korralduse tõmmata viimased 15 tähemärki esimeses argumendis olevast stringist:

    RIGHT("Emma, Disain# (102) 123-4568", 15)

    Väljundiks on alamjada " (102) 123-4568", mis on väga lähedal soovitud tulemusele, välja arvatud eesmine tühik. Seega kasutame funktsiooni TRIM, et sellest vabaneda.

    Kuidas eemaldada tekst pärast märgi viimast esinemist

    Juhul kui teie väärtused on eraldatud muutuva arvu eraldusmärkidega, võite eemaldada kõik, mis järgneb viimasele eraldusmärgile. Seda saab teha järgmise valemiga:

    LEFT( rakk , FIND("#", SUBSTITUTE( rakk , " char ", "#", LEN( rakk ) - LEN(SUBSTITUTE( rakk , " char ", "")))) -1)

    Oletame, et veerg A sisaldab mitmesugust teavet töötajate kohta, kuid viimase koma järel olev väärtus on alati telefoninumber. Teie eesmärk on eemaldada telefoninumbrid ja säilitada kõik muud andmed.

    Eesmärgi saavutamiseks saate selle valemiga eemaldada teksti pärast viimast koma A2-st:

    =LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)

    Kopeerige valem veergu ja saate selle tulemuse:

    Kuidas see valem töötab:

    Valemi põhiolemus on see, et me määrame stringis viimase eraldaja (koma) positsiooni ja tõmbame alamjada vasakult kuni eraldajani. Eraldaja positsiooni saamine on kõige keerulisem osa, ja siin on, kuidas me sellega hakkama saame:

    Kõigepealt selgitame välja, mitu koma on algses stringis. Selleks asendame iga koma tühja ("") ja anname saadud stringi funktsioonile LEN:

    LEN(SUBSTITUTE(A2, ",",""))

    A2 puhul on tulemuseks 35, mis on A2 tähemärkide arv ilma komadeta.

    Vähendage ülaltoodud arv stringi kogupikkusest (38 tähemärki):

    LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))

    ... ja saad 3, mis on A2-s olevate komade koguarv (ja ka viimase koma järjekorranumber).

    Järgnevalt kasutate juba tuttavat funktsioonide FIND ja SUBSTITUTE kombinatsiooni, et saada stringi viimase koma positsioon. Instantsi number (meie puhul 3. koma) antakse eespool nimetatud LEN SUBSTITUTE valemiga:

    FIND("#", SUBSTITUTE(A2, ",", "#", 3))

    Selgub, et 3. koma on A2-s 23. märk, mis tähendab, et peame eraldama sellele eelnevad 22 märki. Seega paneme ülaltoodud valemiga miinus 1 sisse num_chars vasakpoolse argumendiga:

    LEFT(A2, 23-1)

    Kuidas eemaldada teksti enne viimast tähemärki

    Selleks, et kustutada kõik enne viimase konkreetse tähemärgi esinemist, on üldine valem järgmine:

    ÕIGUS( rakk , LEN( rakk ) - FIND("#", SUBSTITUTE( rakk , " char ", "#", LEN( rakk ) - LEN(SUBSTITUTE( rakk , " char ", "")))))

    Meie näidistabelis, et kustutada tekst enne viimast koma, võtab valem sellise kuju:

    =RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",","")))))

    Viimase lihvina pesitseme selle TRIM-funktsiooni sisse, et kõrvaldada juhtivad tühikud:

    =TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",",""))))))

    Kuidas see valem töötab:

    Kokkuvõttes saame viimase koma asukoha, nagu eelmises näites selgitatud, ja lahutame selle stringi kogupikkusest:

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))

    Tulemusena saame viimase koma järel olevate tähemärkide arvu ja anname selle funktsioonile RIGHT, nii et see toob nii palju tähemärke stringi lõpust.

    Kohandatud funktsioon teksti eemaldamiseks mõlemal pool märki

    Nagu eespool toodud näidetest nägite, saate lahendada peaaegu kõik kasutusjuhud, kasutades Exceli originaalfunktsioone erinevates kombinatsioonides. Probleem on selles, et peate meeles pidama käputäie keerulisi valemeid. Hmm, mis siis, kui kirjutame oma funktsiooni, mis katab kõik stsenaariumid? Kõlab hea mõte. Niisiis, lisage oma töövihikusse järgmine VBA-kood (VBA lisamise üksikasjalikud sammud Excelis on järgmised.siin):

    Function RemoveText(str As String , delimiter As String , occurrence As Integer , is_after As Boolean ) Dim delimiter_num, start_num, delimiter_len As Integer Dim str_result As String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) For i = 1 To occurrence delimiter_num = InStr(start_num, str, delimiter, vbTextCompare) If 0 <delimiter_num Then start_num =delimiter_num + delimiter_len End If Next i If 0 <delimiter_num Then If True = is_after Then str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) End If End If RemoveText = str_result End Function

    Meie funktsiooni nimi on RemoveText ja selle süntaks on järgmine:

    RemoveText(string, delimiter, occurrence, is_after)

    Kus:

    String - on algne tekstijada. Võib esitada lahtriviitena.

    Eraldaja - märk enne/järgmine märk, millest tekst eemaldatakse.

    Esinemine - piiritleja instants.

    Is_after - boolilik väärtus, mis näitab, kummal pool eraldajat tekst eemaldatakse. Võib olla üksikmärk või tähemärkide jada.

    • TRUE - kustutab kõik, mis järgneb eraldusjoonele (sealhulgas eraldusjoon ise).
    • FALSE - kustutab kõik enne eraldajaid (sealhulgas ka eraldaja ise).

    Kui funktsiooni kood on teie töövihikusse sisestatud, saate lahtritest eemaldada alajaotusi, kasutades kompaktseid ja elegantseid valemeid.

    Näiteks, et kustutada kõik pärast esimest koma A2-st, on valem B2-s järgmine:

    =RemoveText(A3, ", ", ", 1, TRUE)

    Et kustutada kõik enne esimest koma A2-s, on valem C2-s järgmine:

    =RemoveText(A3, ", ", 1, FALSE)

    Kuna meie kohandatud funktsioon võtab vastu string eraldaja jaoks , siis paneme 2. argumenti koma ja tühiku (", "), et vältida pärast seda juhtivate tühikute kärpimist.

    Meie kohandatud funktsioon töötab ju ilusti, eks ole? Aga kui te arvate, et see on kõikehõlmav lahendus, siis pole te veel järgmist näidet näinud :)

    Kustuta kõik enne, pärast või vahel olevad tähemärgid

    Kui soovite saada veelgi rohkem võimalusi üksikute märkide või teksti eemaldamiseks mitmest lahtrist, vaste või asukoha järgi, lisage meie Ultimate Suite oma Exceli tööriistakasti.

    Siinkohal vaatleme lähemalt Eemalda positsiooni järgi funktsioon asub Ablebits andmed tab> Tekst rühm> Eemaldage .

    Järgnevalt käsitleme kahte kõige tavalisemat stsenaariumi.

    Eemaldage kõik enne või pärast teatud teksti

    Oletame, et kõik teie lähteandmed sisaldavad mõnda ühist sõna või teksti ja te soovite kustutada kõik enne või pärast seda teksti. Selleks valige oma lähteandmed, käivitage käsk Eemalda positsiooni järgi tööriista ja konfigureerige see nagu allpool näidatud:

    1. Valige Kõik tähemärgid enne teksti või Kõik tähemärgid pärast teksti ja sisestage võtmetekst (või märk) selle kõrval olevasse lahtrisse.
    2. Sõltuvalt sellest, kas suur- ja väiketähti tuleb käsitleda erinevate või samade tähtedena, märkige või eemaldage märkeruutu Suur- ja väiketähenduslik kast.
    3. Hit Eemaldage .

    Selles näites eemaldame kõik märgid, mis eelnevad sõnale "error" lahtrites A2:A8:

    Ja saada täpselt see tulemus, mida me otsime:

    Kahe tähemärgi vahelise teksti eemaldamine

    Olukorras, kus ebaoluline teave on 2 konkreetse tähemärgi vahel, saate selle kiiresti kustutada:

    1. Valige Eemaldage kõik alamsõnumid ja sisestage kaks märki allolevatesse lahtritesse.
    2. Kui ka "vahel" märgid tuleks eemaldada, kontrollige, kas Kaasa arvatud eraldusjooned kast.
    3. Klõpsake Eemaldage .

    Näiteks kustutame kõik kahe tilde-märgi (~) vahelt ja saame tulemuseks täiuslikult puhastatud stringid:

    Selleks, et proovida teisi kasulikke funktsioone, mida see multifunktsionaalne tööriist sisaldab, soovitan teil alla laadida selle postituse lõpus olev hindamisversioon. Tänan teid lugemise eest ja loodan, et näeme teid järgmisel nädalal meie blogis!

    Saadaolevad allalaadimised

    Eemaldage esimesed või viimased tähemärgid - näited (.xlsm fail)

    Ultimate Suite - prooviversioon (.exe fail)

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.