Innholdsfortegnelse
I de siste par artiklene har vi sett på forskjellige måter å fjerne tegn fra strenger i Excel. I dag skal vi undersøke enda et brukstilfelle - hvordan slette alt før eller etter et bestemt tegn.
Slett tekst før, etter eller mellom 2 tegn med Finn & Erstatt
For datamanipulering i flere celler er Finn og erstatt det riktige verktøyet. For å fjerne en del av en streng foran eller etter et bestemt tegn, er disse trinnene du skal utføre:
- Velg alle cellene der du vil slette tekst.
- Trykk Ctrl + H for å åpne dialogboksen Finn og erstatt .
- I boksen Finn hva skriver du inn en av følgende kombinasjoner:
- For å eliminere tekst før et gitt tegn , skriv inn tegnet etterfulgt av en stjerne (*tegn).
- For å fjerne tekst etter et bestemt tegn , skriv inn tegnet etterfulgt av en stjerne (tegn). *).
- For å slette en understreng mellom to tegn , skriv inn en stjerne omgitt av 2 tegn (char*char).
- La Erstatt med -boksen er tom.
- Klikk Erstatt alle .
For eksempel, for å fjerne alt etter et komma inkludert selve kommaet, sett et komma og et stjernetegn (,*) i Finn hva -boksen, og du får følgende resultat:
For å slette en understreng før et komma , skriv inn en stjerne, et komma,alt etter 1. komma i A2, formelen i B2 er:
=RemoveText(A3, ", ", 1, TRUE)
For å slette alt før 1. komma i A2, er formelen i C2:
=RemoveText(A3, ", ", 1, FALSE)
Siden vår egendefinerte funksjon aksepterer en streng for skilletegnet , setter vi et komma og et mellomrom (", ") i det andre argumentet for å spare bryet med å trimme innledende mellomrom etterpå.
Vår egendefinerte funksjon fungerer vakkert, ikke sant? Men hvis du tror det er den omfattende løsningen, har du ikke sett neste eksempel ennå :)
Slett alt før, etter eller mellom tegn
For å få enda flere muligheter for å fjerne individuelle tegn eller tekst fra flere celler, etter samsvar eller posisjon, legg til Ultimate Suite i Excel-verktøykassen din.
Her skal vi se nærmere på Fjern etter posisjon -funksjonen som ligger på Ablebits Data -fanen > Tekst -gruppe > Fjern .
Nedenfor vil vi dekke de to de vanligste scenariene.
Fjern alt før eller etter bestemt tekst
Anta at alle kildestrengene dine inneholder et vanlig ord eller tekst, og du ønsker å slette alt før eller etter den teksten. For å få det gjort, velg kildedataene dine, kjør verktøyet Fjern etter posisjon og konfigurer det som vist nedenfor:
- Velg Alle tegn før tekst eller Alle tegn etter tekst og skriv inn nøkkelteksten (eller tegnet) i boksen nestetil den.
- Avhengig av om store og små bokstaver skal behandles som forskjellige eller de samme tegnene, merk av eller fjern merket for Stilling av store og små bokstaver .
- Trykk Fjern .
I dette eksempelet fjerner vi alle tegn foran ordet "feil" i cellene A2:A8:
Og få akkurat det resultatet vi ser etter:
Fjern tekst mellom to tegn
I situasjoner der irrelevant informasjon er mellom to spesifikke tegn, gjør du følgende du kan raskt slette det:
- Velg Fjern alle understrenger og skriv inn to tegn i boksene nedenfor.
- Hvis "mellom" tegnene også skal fjernes , merk av for Inkludert skilletegn .
- Klikk Fjern .
Som et eksempel, vi sletter alt mellom to tilde-tegn (~), og får de perfekt rensede strengene som resultat:
For å prøve andre nyttige funksjoner som følger med denne multifunksjonsmaskinen verktøy, jeg oppfordrer deg til å laste ned en e verdsettelsesversjon på slutten av dette innlegget. Takk for at du leser og håper å se deg på bloggen vår neste uke!
Tilgjengelige nedlastinger
Fjern første eller siste tegn - eksempler (.xlsm-fil)
Ultimate Suite - prøveversjon (.exe-fil)
og et mellomrom (*, ) i Finn hva-boksen.Vær oppmerksom på at vi ikke bare erstatter et komma, men et komma og et mellomrom for å forhindre føring mellomrom i resultatene. Hvis dataene dine er atskilt med kommaer uten mellomrom, bruk en stjerne etterfulgt av et komma (*,).
For å slette tekst mellom to kommaer , bruk en stjerne omgitt av kommaer (,*,).
Tips. Hvis du heller vil ha navn og telefonnumre atskilt med komma, skriv inn et komma (,) i Erstatt med -feltet.
Fjern deler av teksten ved hjelp av Flash Fill
I moderne versjoner av Excel (2013 og nyere) er det en enkel måte å fjerne tekst som går foran eller etter et spesifikt tegn - Flash Fill-funksjonen. Slik fungerer det:
- I en celle ved siden av den første cellen med dataene dine, skriv inn det forventede resultatet og trykk på Enter .
- Begynn å skrive inn en passende verdi i neste celle. Når Excel føler mønsteret i verdiene du skriver inn, vil det vise en forhåndsvisning for de gjenværende cellene etter samme mønster.
- Trykk Enter-tasten for å godta forslaget.
Ferdig!
Fjern tekst ved hjelp av formler
I Microsoft Excel kan mange datamanipulasjoner utført ved å bruke innebygde funksjoner også utføres med en formel. I motsetning til de tidligere metodene, gjør formler ingen endringer i de opprinnelige dataene og gir deg mer kontroll overresultatene.
Hvordan fjerne alt etter et bestemt tegn
For å slette tekst etter et bestemt tegn, er den generiske formelen:
LEFT( celle , SEARCH (" char ", celle ) -1)Her bruker vi SEARCH-funksjonen for å finne posisjonen til tegnet og sende den til VENSTRE-funksjonen, slik at den trekker ut det tilsvarende antallet tegn fra begynnelsen av strengen. Ett tegn trekkes fra tallet returnert av SEARCH for å ekskludere skilletegnet fra resultatene.
For å fjerne en del av en streng etter et komma, skriver du inn formelen nedenfor i B2 og drar den ned gjennom B7 :
=LEFT(A2, SEARCH(",", A2) -1)
Hvordan fjerne alt før et bestemt tegn
For å slette en del av en tekststreng før et bestemt tegn, generisk formel er:
HØYRE( celle , LEN( celle ) - SØK(" tegn ", celle ))Her beregner vi igjen posisjonen til måltegnet ved hjelp av SØK, trekker det fra den totale strenglengden returnert av LEN, og sender forskjellen til HØYRE-funksjonen, slik at den trekker så mange tegn fra slutten av streng.
For eksempel, for å fjerne tekst før et komma, er formelen:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
I vårt tilfelle etterfølges kommaet av et mellomrom. For å unngå innledende mellomrom i resultatene legger vi kjerneformelen inn i TRIM-funksjonen:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))
Merknader:
- Beggeav eksemplene ovenfor antar at det bare er én forekomst av skilletegnet i den opprinnelige strengen. Hvis det er flere forekomster, vil tekst fjernes før/etter første forekomst .
- SØK-funksjonen er ikke skille mellom store og små bokstaver , noe som betyr at den ikke gjør noen forskjell mellom små og store bokstaver. Hvis det spesifikke tegnet ditt er en bokstav og du ønsker å skille mellom store og små bokstaver, bruk store og små bokstaver FINN-funksjonen i stedet for SØK.
Hvordan slette tekst etter Nth forekomst av et tegn
I situasjoner der en kildestreng inneholder flere forekomster av skilletegnet, kan det hende du må fjerne tekst etter en spesifikk forekomst. For dette, bruk følgende formel:
VENSTRE( celle , FINN("#", ERSTATT( celle , " tegn ", "#" , n )) -1)Hvor n er tegnets forekomst for å fjerne tekst.
Den interne logikken til denne formelen krever bruk av et tegn som ikke finnes noe sted i kildedataene, et hash-symbol (#) i vårt tilfelle. Hvis dette tegnet forekommer i datasettet ditt, bruk noe annet i stedet for "#".
For å fjerne for eksempel alt etter det andre kommaet i A2 (og selve kommaet), er formelen:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Hvordan denne formelen fungerer:
Nøkkeldelen av formelen er FINN-funksjonen som beregner plassering av n'erenskilletegn (komma i vårt tilfelle). Slik gjør du:
Vi erstatter det andre kommaet i A2 med et hash-symbol (eller et annet tegn som ikke finnes i dataene dine) ved hjelp av ERSTATTNING:
SUBSTITUTE(A2, ",", "#", 2)
Den resulterende strengen går til det andre argumentet til FIND, så den finner posisjonen til "#" i den strengen:
FIND("#", "Emma, Design# (102) 123-4568")
FIND forteller oss at "#" er det 13. tegnet i strengen. For å vite antall tegn foran det, bare trekk fra 1, og du får 12 som resultat:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Dette tallet går direkte til antall_tegn -argumentet av VENSTRE som ber den om å trekke de første 12 tegnene fra A2:
=LEFT(A2, 12)
Det er det!
Hvordan slette tekst før Nth forekomst av et tegn
Den generiske formelen for å fjerne en delstreng før et bestemt tegn er:
RIGHT(SUBSTITUTE( celle , " char ", "#", n ), LEN( celle ) - FINN("#", SUBSTITUTE( celle , " tegn ", "#", n )) -1)For å fjerne tekst før det andre kommaet i A2, er formelen for eksempel:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
For å eliminere et innledende mellomrom bruker vi TRIM igjen fungere som en innpakning:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Hvordan denne formelen fungerer:
Opsummert finner vi ut hvor mange tegn er etter det n-te skilletegnet og trekk ut en delstreng med tilsvarende lengde fra høyre. Nedenfor er formelen:
Først erstatter vi det andre kommaet i A2 med en hashsymbol:
SUBSTITUTE(A2, ",", "#", 2)
Den resulterende strengen går til tekst -argumentet til RIGHT:
RIGHT("Emma, Design# (102) 123-4568", …
Deretter må vi definere hvor mange tegn som skal trekkes ut fra slutten av strengen. For dette finner vi posisjonen til hash-symbolet i strengen ovenfor (som er 13):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Og trekk det fra den totale strenglengden (som er lik 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Forskjellen (15) går til det andre argumentet til HØYRE og instruerer det om å trekke de siste 15 tegnene fra strengen i det første argumentet:
RIGHT("Emma, Design# (102) 123-4568", 15)
Utgangen er en understreng " (102) 123-4568", som er veldig nær det ønskede resultatet, bortsett fra et innledende mellomrom. Så vi bruker TRIM-funksjonen for å bli kvitt den.
Hvordan fjerne tekst etter siste forekomst av et tegn
Hvis verdiene dine er atskilt med et variabelt antall skilletegn, kan du vil kanskje fjerne alt etter den siste forekomsten av det skilletegnet. Dette kan gjøres med følgende formel:
VENSTRE( celle , FINN("#", ERSTATT( celle , " tegn ", "# ", LEN( celle ) - LEN(SUBSTITUTE( celle , " char ", "")))) -1)Anta at kolonne A inneholder ulike opplysninger om ansatte, men verdien etter siste komma er alltid et telefonnummer. Målet ditt er å fjerne telefonnumre og beholde alle andre detaljer.
For å nå målet kan du fjerne tekst etter siste komma i A2 med detteformel:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Kopiér formelen nedover kolonnen, og du får dette resultatet:
Hvordan dette formel fungerer:
Kjernen i formelen er at vi bestemmer posisjonen til siste skilletegn (komma) i strengen og trekker en delstreng fra venstre opp til skilletegnet. Å finne skilletegnens posisjon er den vanskeligste delen, og her er hvordan vi håndterer det:
Først finner vi ut hvor mange kommaer det er i den opprinnelige strengen. For dette erstatter vi hvert komma med ingenting ("") og serverer den resulterende strengen til LEN-funksjonen:
LEN(SUBSTITUTE(A2, ",",""))
For A2 er resultatet 35, som er antall tegn i A2 uten komma.
Strek tallet ovenfor fra den totale strenglengden (38 tegn):
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
... og du får 3, som er det totale antallet av kommaer i A2 (og også ordenstallet til det siste kommaet).
Deretter bruker du den allerede kjente kombinasjonen av funksjonene FINN og ERSTATTER for å få posisjonen til det siste kommaet i strengen. Forekomstnummeret (3. komma i vårt tilfelle) leveres av den ovennevnte LEN SUBSTITUTE-formelen:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Det ser ut til at det 3. kommaet er det 23. tegnet i A2, noe som betyr at vi trenger for å trekke ut 22 tegn foran. Så vi setter formelen ovenfor minus 1 i antall_tegn -argumentet til LEFT:
LEFT(A2, 23-1)
Hvordan fjerne tekst før siste forekomst av et tegn
For å slettealt før siste forekomst av et spesifikt tegn, den generiske formelen er:
HØYRE( celle , LEN( celle ) - FINN("#", ERSTATT( celle , " char ", "#", LEN( celle ) - LEN(SUBSTITUTE( celle , " char ", "")))))I eksempeltabellen vår, for å fjerne tekst før siste komma, har formelen denne formen:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Som en prikken over i-en Nest den inn i TRIM-funksjonen for å eliminere innledende mellomrom:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Hvordan denne formelen fungerer:
Oppsummert får vi posisjonen til det siste kommaet som forklart i forrige eksempel og trekker det fra den totale lengden på strengen:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
Som et resultat får vi antall tegn etter det siste kommaet og send det til HØYRE-funksjonen, så det henter så mange tegn fra slutten av strengen.
Egendefinert funksjon for å fjerne tekst på hver side av et tegn
Som du har sett i eksemplene ovenfor, kan du løse nesten alle brukssaker ved å bruke Excels opprinnelige f utslag i forskjellige kombinasjoner. Problemet er at du må huske en håndfull vanskelige formler. Hmm, hva om vi skriver vår egen funksjon for å dekke alle scenariene? Høres ut som en god idé. Så legg til følgende VBA-kode i arbeidsboken (de detaljerte trinnene for å sette inn VBA i Excel er her):
Funksjon RemoveText(str As String , skilletegn As String , occurrence As Integer , is_after AsBoolean ) Dim delimiter_num, start_num, delimiter_len Som heltall Dim str_result As String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) For i = 1 Til forekomst delimiter_num = InStr(start_num, str, 0Compare, vbTex) < delimiter_num Deretter 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 SluttfunksjonVår funksjon heter RemoveText og den har følgende syntaks:
RemoveText(streng, skilletegn, forekomst, er_etter)Hvor:
String - er den opprinnelige tekststrengen. Kan representeres av en cellereferanse.
Delimiter - tegnet før/etter som tekst skal fjernes.
Forekomst - forekomsten av skilletegn.
Er_etter - en boolsk verdi som angir på hvilken side av skilletegnet som skal fjernes tekst. Kan være et enkelt tegn eller en sekvens av tegn.
- TRUE - slett alt etter skilletegnet (inkludert selve skilletegnet).
- USANN - slett alt før skilletegnet (inkludert selve skilletegn).
Når funksjonens kode er satt inn i arbeidsboken din, kan du fjerne delstrenger fra celler ved hjelp av kompakte og elegante formler.
For eksempel, for å slette