Poista tekstiä ennen kahta merkkiä, kahden merkin jälkeen tai kahden merkin väliltä Excelissä.

  • Jaa Tämä
Michael Brown

Parissa viime artikkelissa olemme tarkastelleet eri tapoja poistaa merkkejä merkkijonoista Excelissä. Tänään tutkimme vielä yhtä käyttötapausta - miten poistaa kaikki ennen tai jälkeen tietyn merkin.

    Poista tekstiä ennen, jälkeen tai kahden merkin väliltä Etsi & Korvaa; Korvaa tekstillä

    Kun haluat käsitellä tietoja useissa soluissa, Etsi ja korvaa on oikea työkalu. Voit poistaa tietyn merkin edeltävän tai seuraavan merkkijonon osan seuraavasti:

    1. Valitse kaikki solut, joista haluat poistaa tekstiä.
    2. Paina Ctrl + H avataksesi Etsi ja korvaa vuoropuhelu.
    3. Vuonna Etsi mitä ruutuun jokin seuraavista yhdistelmistä:
      • Tekstin poistaminen ennen tiettyä merkkiä , kirjoita merkki, jota edeltää tähti (*char).
      • Tekstin poistaminen tietyn merkin jälkeen , kirjoita merkki, jota seuraa tähti (char*).
      • Osajonon poistaminen kahden merkin välillä , kirjoita 2 merkin ympäröimä tähti (char*char).
    4. Jätä Vaihda kanssa laatikko tyhjä.
    5. Klikkaa Korvaa kaikki .

    Esimerkiksi, jos haluat poistaa kaikki pilkun jälkeen mukaan lukien itse pilkku, laita pilkku ja tähtimerkki (,*) kohtaan Etsi mitä ruutuun, ja saat seuraavan tuloksen:

    Osajonon poistaminen ennen pilkkua , kirjoita tähti, pilkku ja välilyönti (*, ) kohtaan Etsi mitä laatikko.

    Huomatkaa, että emme korvaa vain pilkkua, vaan pilkku ja välilyönti Jos tietosi on erotettu pilkuilla ilman välilyöntejä, käytä tähteä, jota seuraa pilkku (*,).

    Tekstin poistaminen kahden pilkun välissä , käytä tähteä pilkujen ympäröimänä (,*,).

    Vihje: Jos haluat, että nimet ja puhelinnumerot erotetaan toisistaan pilkulla, kirjoita pilkku (,) kenttään nimien ja puhelinnumeroiden välille. Korvaa seuraavalla kenttä.

    Poista osa tekstistä Flash Fillin avulla

    Nykyaikaisissa Excel-versioissa (2013 ja uudemmat) on vielä yksi helppo tapa poistaa tiettyä merkkiä edeltävä tai seuraava teksti - Flash Fill -toiminto. Näin se toimii:

    1. Kirjoita odotettu tulos sen solun viereiseen soluun, jossa on ensimmäiset tietosi, ja paina Enter-näppäintä .
    2. Aloita sopivan arvon kirjoittaminen seuraavaan soluun. Kun Excel havaitsee syöttämiesi arvojen mallin, se näyttää esikatselun jäljellä olevista soluista, jotka noudattavat samaa mallia.
    3. Hyväksy ehdotus painamalla Enter-näppäintä.

    Valmis!

    Poista tekstiä kaavojen avulla

    Microsoft Excelissä monet sisäänrakennettujen ominaisuuksien avulla tehdyt tietojenkäsittelyt voidaan suorittaa myös kaavan avulla. Toisin kuin edelliset menetelmät, kaavat eivät tee muutoksia alkuperäisiin tietoihin, ja niiden avulla voit hallita tuloksia paremmin.

    Kuinka poistaa kaikki tietyn merkin jälkeen

    Jos haluat poistaa tekstin tietyn merkin jälkeen, yleinen kaava on:

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

    Tässä käytämme SEARCH-funktiota saadaksemme merkin sijainnin ja välitämme sen LEFT-funktiolle, jotta se poimii vastaavan määrän merkkejä merkkijonon alusta. SEARCH-funktion palauttamasta määrästä vähennetään yksi merkki, jotta erotin jätetään pois tuloksista.

    Jos haluat esimerkiksi poistaa osan merkkijonosta pilkun jälkeen, kirjoita alla oleva kaava kohtaan B2 ja vedä se alaspäin kohtaan B7:

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

    Kuinka poistaa kaikki ennen tiettyä merkkiä

    Jos haluat poistaa osan merkkijonosta ennen tiettyä merkkiä, yleinen kaava on:

    RIGHT( solu , LEN( solu ) - SEARCH(" char ", solu ))

    Tässä laskemme jälleen kohdemerkin sijainnin SEARCH-funktion avulla, vähennämme sen LEN-funktion palauttamasta merkkijonon kokonaispituudesta ja välitämme erotuksen RIGHT-funktiolle, jotta se vetää kyseisen määrän merkkejä merkkijonon lopusta.

    Jos haluat esimerkiksi poistaa tekstin ennen pilkkua, kaava on seuraava:

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

    Meidän tapauksessamme pilkkua seuraa välilyönti. Jotta välilyönnit eivät pääsisi tuloksiin, käärimme ydinkaavan TRIM-funktioon:

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

    Huomautuksia:

    • Molemmissa edellä mainituissa esimerkeissä oletetaan, että on olemassa vain yksi ainoa yksi tapaus Jos merkkijonossa on useita merkintöjä, teksti poistetaan ennen/jälkeen merkkijonoa. ensimmäinen instanssi .
    • SEARCH-toiminto on ei eroa isojen ja pienten kirjainten välillä eli se ei tee eroa pienen ja ison kirjaimen välillä. Jos tietty merkki on kirjain ja haluat erottaa kirjaimen ison ja pienen kirjaimen, käytä komentoa case-sensitive FIND-toiminto SEARCH-toiminnon sijaan.

    Kuinka poistaa tekstiä merkin N:nnen esiintymisen jälkeen?

    Jos lähdejono sisältää useita erottimen esiintymiä, voi olla tarpeen poistaa teksti tietyn esiintymän jälkeen. Käytä tähän seuraavaa kaavaa:

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

    Missä n on merkin esiintymä, jonka jälkeen teksti poistetaan.

    Tämän kaavan sisäinen logiikka edellyttää, että käytetään jotain merkkiä, jota ei ole missään lähdetiedoissa, meidän tapauksessamme hash-symbolia (#). Jos tämä merkki esiintyy tietokokonaisuudessasi, käytä jotain muuta merkkiä #:n sijasta.

    Esimerkiksi, jos haluat poistaa kaiken A2:n toisen pilkun jälkeen (ja itse pilkun), kaava on seuraava:

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

    Miten tämä kaava toimii:

    Kaavan keskeinen osa on FIND-funktio, joka laskee n:nnen erotinmerkin (tässä tapauksessa pilkun) sijainnin. Näin:

    Korvaamme A2:n toisen pilkun hash-symbolilla (tai muulla merkillä, jota ei ole tiedoissasi) SUBSTITUTE-operaattorin avulla:

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

    Tuloksena saatu merkkijono menee FIND:n 2. argumenttiin, joten se etsii "#":n paikan merkkijonossa:

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

    FIND kertoo meille, että "#" on merkkijonon 13. Jos haluat tietää sitä edeltävien merkkien lukumäärän, vähennä 1, jolloin tulokseksi saadaan 12:

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

    Tämä numero menee suoraan num_chars argumentti LEFT pyytää sitä vetämään 12 ensimmäistä merkkiä A2:sta:

    =LEFT(A2, 12)

    Juuri noin!

    Kuinka poistaa teksti ennen merkin N:ttä esiintymää?

    Yleinen kaava osajonon poistamiseksi ennen tiettyä merkkiä on:

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

    Jos haluat esimerkiksi poistaa tekstin ennen A2-kohdan toista pilkkua, kaava on seuraava:

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

    Etumaisen välilyönnin poistamiseksi käytämme jälleen TRIM-funktiota kääreenä:

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

    Miten tämä kaava toimii:

    Lyhyesti sanottuna selvitetään, kuinka monta merkkiä on n:nnen erotinmerkin jälkeen, ja poimitaan oikealta oikeanpituinen merkkijono. Alla on kaavan erittely:

    Ensin korvataan A2:n toinen pilkku hash-symbolilla:

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

    Tuloksena syntyvä merkkijono menee teksti RIGHT-argumentti:

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

    Seuraavaksi on määriteltävä, kuinka monta merkkiä merkkijonon lopusta otetaan pois. Tätä varten etsitään hash-symbolin sijainti edellä olevassa merkkijonossa (joka on 13):

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

    Ja vähennä se merkkijonon kokonaispituudesta (joka on 28):

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

    Ero (15) menee RIGHT:n toiseen argumenttiin ja käskee sitä ottamaan viimeiset 15 merkkiä ensimmäisessä argumentissa olevasta merkkijonosta:

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

    Tuloksena on merkkijono " (102) 123-4568", joka on hyvin lähellä haluttua lopputulosta, lukuun ottamatta etumerkkiä. Käytämme TRIM-funktiota sen poistamiseksi.

    Kuinka poistaa teksti merkin viimeisen esiintymän jälkeen?

    Jos arvot on erotettu toisistaan vaihtelevalla määrällä erottimia, haluat ehkä poistaa kaiken viimeisen erottimen jälkeen. Tämä voidaan tehdä seuraavalla kaavalla:

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

    Oletetaan, että sarake A sisältää erilaisia tietoja työntekijöistä, mutta viimeisen pilkun jälkeinen arvo on aina puhelinnumero. Tavoitteenasi on poistaa puhelinnumerot ja säilyttää kaikki muut tiedot.

    Tavoitteen saavuttamiseksi voit poistaa A2-kohdan viimeisen pilkun jälkeisen tekstin tällä kaavalla:

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

    Kopioi kaava sarakkeeseen, ja saat tämän tuloksen:

    Miten tämä kaava toimii:

    Kaavan ydin on se, että määrittelemme merkkijonon viimeisen erottimen (pilkun) sijainnin ja vedämme merkkijonon vasemmalta erottimeen asti. Erottimen sijainnin saaminen on hankalin osa, ja näin hoidamme sen:

    Ensin selvitetään, kuinka monta pilkkua alkuperäisessä merkkijonossa on. Tätä varten korvataan jokainen pilkku tyhjällä ("") ja annetaan tuloksena saatu merkkijono LEN-funktiolle:

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

    A2:n osalta tulos on 35, joka on A2:n merkkien määrä ilman pilkkuja.

    Vähennä edellä mainittu luku merkkijonon kokonaispituudesta (38 merkkiä):

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

    ... ja saat tulokseksi 3, joka on A2:n pilkkujen kokonaismäärä (ja myös viimeisen pilkun järjestysluku).

    Seuraavaksi käytät jo tuttua FIND- ja SUBSTITUTE-funktioiden yhdistelmää saadaksesi viimeisen pilkun sijainnin merkkijonossa. Instanssin numero (meidän tapauksessamme kolmas pilkku) saadaan edellä mainitusta LEN SUBSTITUTE-kaavasta:

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

    Näyttää siltä, että kolmas pilkku on A2:n 23. merkki, mikä tarkoittaa, että sitä edeltävät 22 merkkiä on poistettava. Laitetaan siis yllä oleva kaava miinus 1 kohtaan num_chars LEFT-argumentti:

    LEFT(A2, 23-1)

    Kuinka poistaa teksti ennen merkin viimeistä esiintymää?

    Jos haluat poistaa kaiken ennen tietyn merkin viimeistä esiintymää, yleinen kaava on:

    RIGHT( solu , LEN( solu ) - FIND("#", SUBSTITUTE( solu , " char ", "#", LEN( solu ) - LEN(SUBSTITUTE( solu , " char ", "")))))

    Esimerkkitaulukossamme ennen viimeistä pilkkua olevan tekstin poistamiseksi kaava on seuraavanlainen:

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

    Viimeistelemme sen TRIM-toiminnolla ja poistamme etumerkkien välit:

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

    Miten tämä kaava toimii:

    Yhteenvetona saadaan viimeisen pilkun sijainti, kuten edellisessä esimerkissä selitettiin, ja vähennetään se merkkijonon kokonaispituudesta:

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

    Tuloksena saamme viimeisen pilkun jälkeisten merkkien määrän ja annamme sen RIGHT-funktiolle, jotta se tuo kyseisen määrän merkkejä merkkijonon loppuun.

    Mukautettu toiminto tekstin poistamiseksi merkin molemmin puolin

    Kuten yllä olevista esimerkeistä olet nähnyt, voit ratkaista lähes minkä tahansa käyttötapauksen käyttämällä Excelin natiiveja funktioita eri yhdistelminä. Ongelmana on, että sinun on muistettava kourallinen hankalia kaavoja. Hmm, mitä jos kirjoittaisimme oman funktion, joka kattaa kaikki skenaariot? Kuulostaa hyvältä ajatukselta. Lisää siis seuraava VBA-koodi työkirjaasi (yksityiskohtaiset vaiheet VBA:n lisäämiseksi Exceliin ovat seuraavattäällä):

    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 End If RemoveText = str_result End Function

    Funktiomme nimi on RemoveText ja sen syntaksi on seuraava:

    RemoveText(merkkijono, rajaaja, esiintymä, is_after)

    Missä:

    merkkijono - on alkuperäinen merkkijono. Voidaan esittää soluviittauksena.

    Delimiter - merkki, jota ennen/jälkeen teksti poistetaan.

    Tapahtuma - erotinyksikkö.

    Is_after - Boolen arvo, joka osoittaa, kummalta puolelta rajaajaa teksti poistetaan. Voi olla yksittäinen merkki tai merkkijono.

    • TRUE - poistaa kaiken rajaajan jälkeen (myös itse rajaajan).
    • FALSE - poistaa kaiken ennen erotinta (mukaan lukien itse erotin).

    Kun toiminnon koodi on lisätty työkirjaan, voit poistaa solujen merkkijonoja käyttämällä tiiviitä ja tyylikkäitä kaavoja.

    Esimerkiksi, jos haluat poistaa kaiken A2:n ensimmäisen pilkun jälkeen, B2:n kaava on:

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

    Jos haluat poistaa kaiken ennen ensimmäistä pilkkua A2:ssa, C2:n kaava on:

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

    Koska mukautettu funktiomme hyväksyy merkkijono erottimeksi , laitamme pilkun ja välilyönnin (", ") toiseen argumenttiin, jotta vältymme etumerkkien leikkaamiselta jälkikäteen.

    Mukautettu toimintomme toimii hienosti, eikö niin? Mutta jos luulet, että se on kattava ratkaisu, et ole nähnyt seuraavaa esimerkkiä vielä :)

    Poista kaikki ennen, jälkeen tai merkkien väliltä

    Jos haluat vielä enemmän vaihtoehtoja yksittäisten merkkien tai tekstin poistamiseen useista soluista, vastaavuuden tai sijainnin mukaan, lisää Ultimate Suite -ohjelmistomme Excel-työkalupakkiisi.

    Tässä tarkastelemme lähemmin seuraavia asioita Poista aseman mukaan ominaisuus sijaitsee Ablebits Data tab> Teksti ryhmä> Poista .

    Seuraavassa käsitellään kahta yleisintä skenaariota.

    Poista kaikki ennen tai jälkeen tietyn tekstin

    Oletetaan, että kaikki lähdejonosi sisältävät jonkin yhteisen sanan tai tekstin ja haluat poistaa kaiken ennen tai jälkeen kyseisen tekstin. Voit tehdä sen valitsemalla lähdetietosi, suorittamalla komennon Poista aseman mukaan työkalua ja määritä se alla esitetyllä tavalla:

    1. Valitse Kaikki merkit ennen tekstiä tai Kaikki merkit tekstin jälkeen ja kirjoita avainteksti (tai -merkki) sen vieressä olevaan ruutuun.
    2. Riippuen siitä, pitäisikö isoja ja pieniä kirjaimia käsitellä eri vai samoina merkkeinä, merkitse tai poista valintaruutu Case-sensitive laatikko.
    3. Hit Poista .

    Tässä esimerkissä poistamme kaikki merkit, jotka edeltävät sanaa "virhe" soluissa A2:A8:

    Ja saamme juuri sen tuloksen, jota etsimme:

    Poista teksti kahden merkin välistä

    Jos merkityksettömiä tietoja on kahden tietyn merkin välissä, voit poistaa ne nopeasti seuraavasti:

    1. Valitse Poista kaikki osajonot ja kirjoita kaksi merkkiä alla oleviin kenttiin.
    2. Jos myös "between"-merkit on poistettava, tarkista, että merkkijono Mukaan lukien rajaukset laatikko.
    3. Klikkaa Poista .

    Esimerkkinä poistamme kaiken kahden tilde-merkin (~) väliltä ja saamme tulokseksi täydellisesti puhdistetut merkkijonot:

    Jos haluat kokeilla muita hyödyllisiä ominaisuuksia, jotka sisältyvät tähän monitoimityökaluun, kehotan sinua lataamaan arviointiversion tämän viestin lopussa. Kiitos lukemisesta ja toivottavasti tapaamme blogissamme ensi viikolla!

    Saatavilla olevat lataukset

    Poista ensimmäiset tai viimeiset merkit - esimerkkejä (.xlsm-tiedosto)

    Ultimate Suite - kokeiluversio (.exe-tiedosto)

    Michael Brown on omistautunut teknologian harrastaja, jolla on intohimo yksinkertaistaa monimutkaisia ​​prosesseja ohjelmistotyökalujen avulla. Yli vuosikymmenen kokemuksella teknologia-alalta hän on hionut taitojaan Microsoft Excelissä ja Outlookissa sekä Google Sheetsissä ja Docsissa. Michaelin blogi on omistettu jakamaan tietojaan ja asiantuntemustaan ​​muiden kanssa, ja se tarjoaa helposti seurattavia vinkkejä ja opetusohjelmia tuottavuuden ja tehokkuuden parantamiseksi. Olitpa kokenut ammattilainen tai aloittelija, Michaelin blogi tarjoaa arvokkaita oivalluksia ja käytännön neuvoja, joiden avulla saat kaiken irti näistä tärkeistä ohjelmistotyökaluista.