Fjern tekst før, efter eller mellem to tegn i Excel

  • Del Dette
Michael Brown

I de seneste par artikler har vi set på forskellige måder at fjerne tegn fra strenge i Excel. I dag undersøger vi endnu et anvendelsestilfælde - hvordan du sletter alt før eller efter et bestemt tegn.

    Slet tekst før, efter eller mellem 2 tegn med Find & Udskift

    Til datamanipulationer i flere celler er Find og erstat det rigtige værktøj. Hvis du vil fjerne en del af en streng, der går forud for eller følger efter et bestemt tegn, skal du udføre disse trin:

    1. Vælg alle de celler, hvor du vil slette tekst.
    2. Tryk på Ctrl + H for at åbne Find og erstat dialog.
    3. I den Find hvad feltet, skal du indtaste en af følgende kombinationer:
      • For at fjerne tekst før et givet tegn , skriv det tegn, der indledes med en stjerne (*char).
      • Sådan fjerner du tekst efter et bestemt tegn , skriv tegnet efterfulgt af en asterisk (char*).
      • Sådan slettes en delstreng mellem to tegn , skriv en asterisk omgivet af 2 tegn (char*char).
    4. Lad den Udskift med feltet tomt.
    5. Klik på Udskift alle .

    For eksempel for at fjerne alt efter et komma inklusive selve kommaet, skal du sætte et komma og et stjernetegn (,*) i Find hvad feltet, og du får følgende resultat:

    Sådan slettes en delstreng før et komma , skriv en asterisk, et komma og et mellemrum (*, ) i feltet Find hvad boks.

    Bemærk venligst, at vi ikke blot erstatter et komma, men et komma og et mellemrum for at undgå ledende mellemrum i resultaterne. Hvis dine data er adskilt af kommaer uden mellemrum, skal du bruge en asterisk efterfulgt af et komma (*,).

    Sådan sletter du tekst mellem to kommaer , skal du bruge en stjerne omgivet af kommaer (,*,).

    Tip. Hvis du hellere vil have navne og telefonnumre adskilt med et komma, skal du skrive et komma (,) i feltet Udskift med felt.

    Fjern en del af teksten ved hjælp af Flash Fill

    I moderne versioner af Excel (2013 og nyere) er der endnu en nem måde at slette tekst, der går forud for eller følger efter et bestemt tegn, nemlig funktionen Flash Fill. Sådan fungerer den:

    1. Indtast det forventede resultat i en celle ved siden af den første celle med dine data, og tryk på Enter .
    2. Begynd at skrive en passende værdi i den næste celle. Når Excel mærker mønsteret i de værdier, du indtaster, vises en forhåndsvisning af de resterende celler, der følger samme mønster.
    3. Tryk på Enter-tasten for at acceptere forslaget.

    Færdig!

    Fjern tekst ved hjælp af formler

    I Microsoft Excel kan mange datamanipulationer, der udføres ved hjælp af indbyggede funktioner, også udføres med en formel. I modsætning til de tidligere metoder ændrer formler ikke de oprindelige data, og de giver dig mere kontrol over resultaterne.

    Sådan fjerner du alt efter et bestemt tegn

    Hvis du vil slette tekst efter et bestemt tegn, er den generelle formel:

    VENSTRE( celle , SEARCH(" char ", celle ) -1)

    Her bruger vi SEARCH-funktionen til at finde tegnets position og sender det til LEFT-funktionen, så den udtrækker det tilsvarende antal tegn fra starten af strengen. Et tegn trækkes fra det antal, der returneres af SEARCH, for at udelukke afgrænseren fra resultaterne.

    Hvis du f.eks. vil fjerne en del af en streng efter et komma, skal du indtaste nedenstående formel i B2 og trække den ned gennem B7:

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

    Sådan fjerner du alt før et bestemt tegn

    Hvis du vil slette en del af en tekststreng før et bestemt tegn, er den generelle formel:

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

    Her beregner vi igen positionen for måltegnet ved hjælp af SEARCH, trækker den fra den samlede længde af strengen, der returneres af LEN, og sender forskellen til RIGHT-funktionen, så den trækker så mange tegn fra slutningen af strengen.

    Hvis du f.eks. vil fjerne tekst før et komma, er formlen:

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

    I vores tilfælde er kommaet efterfulgt af et mellemrum. For at undgå ledende mellemrum i resultaterne pakker vi kerneformlen ind i TRIM-funktionen:

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

    Bemærkninger:

    • I begge ovenstående eksempler antages det, at der kun er et tilfælde af afgrænseren i den oprindelige streng. Hvis der er flere forekomster, vil teksten blive fjernet før/efter afgrænseren første instans .
    • Funktionen SEARCH er ikke skivensitiv , hvilket betyder, at den ikke gør nogen forskel mellem små og store bogstaver. Hvis dit specifikke tegn er et bogstav, og du ønsker at skelne mellem bogstaver, skal du bruge skraldefølsom FIND-funktionen i stedet for SEARCH.

    Sådan slettes tekst efter Nth forekomst af et tegn

    I situationer, hvor en kildestreng indeholder flere forekomster af afgrænseren, kan du have behov for at fjerne tekst efter en bestemt forekomst. Brug følgende formel til dette formål:

    VENSTRE( celle , FIND("#", SUBSTITUTE( celle , " char ", "#", n )) -1)

    Hvor n er det tegn, efter hvilket teksten skal fjernes.

    Den interne logik i denne formel kræver, at der anvendes et tegn, som ikke findes nogen steder i kildedataene, i vores tilfælde et hash-symbol (#). Hvis dette tegn forekommer i dit datasæt, skal du bruge noget andet i stedet for "#".

    For at fjerne alt efter det andet komma i A2 (og selve kommaet) er formlen f.eks:

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

    Sådan fungerer denne formel:

    Den vigtigste del af formlen er FIND-funktionen, der beregner placeringen af den niende afgrænser (komma i vores tilfælde). Sådan gør du:

    Vi erstatter det andet komma i A2 med et hash-symbol (eller et andet tegn, som ikke findes i dine data) ved hjælp af SUBSTITUTE:

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

    Den resulterende streng går til det andet argument i FIND, så den finder positionen for "#" i denne streng:

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

    FIND fortæller os, at "#" er det 13. tegn i strengen. Hvis du vil vide, hvor mange tegn der går forud for det, skal du bare trække 1 fra, og du får 12 som resultat:

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

    Dette nummer går direkte til den num_chars argumentet for LEFT og beder den om at trække de første 12 tegn fra A2:

    =LEFT(A2, 12)

    Det var det!

    Sådan slettes tekst før Nth forekomst af et tegn

    Den generiske formel til at fjerne en delstreng før et bestemt tegn er:

    HØJRE(ERSTATTE( celle , " char ", "#", n ), LEN( celle ) - FIND("#", SUBSTITUTE( celle , " char ", "#", n )) -1)

    For at fjerne teksten før det andet komma i A2 er formlen f.eks:

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

    For at fjerne et ledende mellemrum bruger vi igen TRIM-funktionen som en wrapper:

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

    Sådan fungerer denne formel:

    Kort sagt finder vi ud af, hvor mange tegn der er efter den niende afgrænser, og udtrækker en delstreng af den tilsvarende længde fra højre. Nedenfor er formlen opdelt:

    Først erstatter vi det andet komma i A2 med et hash-symbol:

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

    Den resulterende streng går til tekst argument for RIGHT:

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

    Dernæst skal vi definere, hvor mange tegn der skal udtrækkes fra slutningen af strengen. Vi finder hash-symbolets position i ovenstående streng (som er 13):

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

    Og trækker det fra den samlede strenglængde (som er 28):

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

    Forskellen (15) går til det andet argument i RIGHT og instruerer den i at trække de sidste 15 tegn fra strengen i det første argument:

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

    Resultatet er en delstreng " (102) 123-4568", som er meget tæt på det ønskede resultat, bortset fra et ledende mellemrum. Vi bruger derfor TRIM-funktionen til at fjerne det.

    Sådan fjerner du tekst efter den sidste forekomst af et tegn

    Hvis dine værdier er adskilt med et variabelt antal afgrænsere, kan du fjerne alt efter den sidste forekomst af den pågældende afgrænser. Dette kan gøres med følgende formel:

    VENSTRE( celle , FIND("#", SUBSTITUTE( celle , " char ", "#", LEN( celle ) - LEN(ERSTATNING( celle , " char ", "")))) -1)

    Lad os antage, at kolonne A indeholder forskellige oplysninger om medarbejdere, men at værdien efter det sidste komma altid er et telefonnummer. Dit mål er at fjerne telefonnumre og beholde alle andre oplysninger.

    For at nå målet kan du fjerne tekst efter det sidste komma i A2 med denne formel:

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

    Kopier formlen ned i kolonnen, og du får dette resultat:

    Sådan fungerer denne formel:

    Det væsentlige i formlen er, at vi bestemmer positionen for den sidste afgrænser (komma) i strengen og trækker en delstreng fra venstre op til afgrænseren. At finde afgrænserens position er den vanskeligste del, og her er, hvordan vi håndterer det:

    Først finder vi ud af, hvor mange kommaer der er i den oprindelige streng. Vi erstatter derfor hvert komma med ingenting ("") og serverer den resulterende streng for LEN-funktionen:

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

    For A2 er resultatet 35, hvilket er antallet af tegn i A2 uden kommaer.

    Træk ovenstående tal fra den samlede strenglængde (38 tegn):

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

    ... og du får 3, som er det samlede antal kommaer i A2 (og også det ordinale nummer af det sidste komma).

    Dernæst bruger du den allerede velkendte kombination af FIND- og SUBSTITUTE-funktionerne til at finde placeringen af det sidste komma i strengen. Instansnummeret (3. komma i vores tilfælde) leveres af den ovennævnte LEN SUBSTITUTE-formel:

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

    Det viser sig, at det tredje komma er det 23. tegn i A2, hvilket betyder, at vi skal udtrække 22 tegn før det. Så vi sætter ovenstående formel minus 1 i num_chars argument for LEFT:

    VENSTRE(A2, 23-1)

    Sådan fjerner du tekst før den sidste forekomst af et tegn

    Hvis du vil slette alt før det sidste tilfælde af et bestemt tegn, er den generelle formel:

    RIGHT( celle , LEN( celle ) - FIND("#", SUBSTITUTE( celle , " char ", "#", LEN( celle ) - LEN(ERSTATNING( celle , " char ", "")))))

    I vores eksempel på en tabel skal formlen for at fjerne teksten før det sidste komma have denne formular:

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

    Som en sidste detalje integrerer vi den i TRIM-funktionen for at fjerne ledende mellemrum:

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

    Sådan fungerer denne formel:

    Kort sagt får vi positionen for det sidste komma som forklaret i det foregående eksempel og trækker det fra strengenes samlede længde:

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

    Som resultat får vi antallet af tegn efter det sidste komma og sender det til RIGHT-funktionen, så den bringer det antal tegn fra slutningen af strengen.

    Brugerdefineret funktion til at fjerne tekst på begge sider af et tegn

    Som du har set i ovenstående eksempler, kan du løse næsten alle brugssituationer ved at bruge Excels indbyggede funktioner i forskellige kombinationer. Problemet er, at du skal huske en håndfuld vanskelige formler. Hmm, hvad nu hvis vi skriver vores egen funktion til at dække alle scenarier? Det lyder som en god idé. Så tilføj følgende VBA-kode til din projektmappe (de detaljerede trin til at indsætte VBA i Excel erher):

    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

    Vores funktion hedder RemoveText og den har følgende syntaks:

    RemoveText(string, afgrænser, forekomst, is_after)

    Hvor:

    String - er den oprindelige tekststreng. Kan repræsenteres ved en cellehenvisning.

    Afgrænser - det tegn, før/efter hvilket teksten skal fjernes.

    Forekomst - eksemplet af afgrænseren.

    Er_efter - en boolsk værdi, der angiver, på hvilken side af afgrænseren teksten skal fjernes. Kan være et enkelt tegn eller en sekvens af tegn.

    • TRUE - sletter alt efter afgrænseren (inklusive selve afgrænseren).
    • FALSE - sletter alt før afgrænseren (inklusive selve afgrænseren).

    Når funktionens kode er indsat i din projektmappe, kan du fjerne delstrenge fra celler ved hjælp af kompakte og elegante formler.

    For at slette alt efter det første komma i A2 er formlen i B2 f.eks:

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

    For at slette alt før det første komma i A2 er formlen i C2 følgende:

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

    Da vores brugerdefinerede funktion accepterer en streng til afgrænseren , sætter vi et komma og et mellemrum (", ") i det andet argument for at spare besværet med at fjerne de ledende mellemrum bagefter.

    Vores brugerdefinerede funktion fungerer fint, ikke sandt? Men hvis du tror, at det er den komplette løsning, har du ikke set det næste eksempel endnu :)

    Slet alt før, efter eller mellem tegn

    Hvis du vil have endnu flere muligheder for at fjerne individuelle tegn eller tekst fra flere celler, efter match eller position, kan du tilføje vores Ultimate Suite til din Excel-værktøjskasse.

    Her vil vi se nærmere på de Fjern efter position funktion, der er placeret på den Ablebits Data faneblad> Tekst gruppe> Fjern .

    Nedenfor vil vi beskrive de to mest almindelige scenarier.

    Fjern alt før eller efter en bestemt tekst

    Antag, at alle dine kildestrenge indeholder et fælles ord eller tekst, og at du ønsker at slette alt før eller efter denne tekst. For at få det gjort, skal du vælge dine kildedata, køre Fjern efter position værktøjet, og konfigurer det som vist nedenfor:

    1. Vælg den Alle tegn før teksten eller Alle tegn efter teksten og skriv nøgleteksten (eller tegnet) i feltet ved siden af.
    2. Afhængigt af om store og små bogstaver skal behandles som forskellige eller samme tegn, skal du markere eller fjerne markeringen i Skrivefølsom boks.
    3. Hit Fjern .

    I dette eksempel fjerner vi alle tegn, der går forud for ordet "fejl" i cellerne A2:A8:

    Og får præcis det resultat, vi søger:

    Fjern tekst mellem to tegn

    I situationer, hvor irrelevante oplysninger er mellem 2 specifikke tegn, kan du hurtigt slette dem på følgende måde:

    1. Vælg Fjern alle understrenge og skriv to tegn i nedenstående felter.
    2. Hvis "mellem"-tegnene også skal fjernes, skal du kontrollere Inklusive afgrænsere boks.
    3. Klik på Fjern .

    Som et eksempel sletter vi alt mellem to tilde-tegn (~) og får de perfekt rensede strenge som resultat:

    Hvis du vil prøve andre nyttige funktioner i dette multifunktionelle værktøj, opfordrer jeg dig til at downloade en evalueringsversion i slutningen af dette indlæg. Tak for din læsning og håber at se dig på vores blog i næste uge!

    Tilgængelige downloads

    Fjern første eller sidste tegn - eksempler (.xlsm-fil)

    Ultimate Suite - prøveversion (.exe-fil)

    Michael Brown er en dedikeret teknologientusiast med en passion for at forenkle komplekse processer ved hjælp af softwareværktøjer. Med mere end ti års erfaring i teknologibranchen har han finpudset sine færdigheder i Microsoft Excel og Outlook samt Google Sheets og Docs. Michaels blog er dedikeret til at dele sin viden og ekspertise med andre og giver nemme at følge tips og vejledninger til at forbedre produktiviteten og effektiviteten. Uanset om du er en erfaren professionel eller nybegynder, tilbyder Michaels blog værdifuld indsigt og praktiske råd til at få mest muligt ud af disse vigtige softwareværktøjer.