Verwijder tekst voor, na of tussen twee tekens in Excel

  • Deel Dit
Michael Brown

In de recente artikelen hebben we gekeken naar verschillende manieren om tekens te verwijderen uit tekenreeksen in Excel. Vandaag onderzoeken we nog een gebruiksgeval - hoe we alles voor of na een specifiek teken kunnen verwijderen.

    Tekst voor, na of tussen 2 karakters verwijderen met Zoeken & vervangen

    Voor gegevensmanipulaties in meerdere cellen is Zoeken en vervangen het juiste gereedschap. Om een deel van een tekenreeks voor of na een specifiek teken te verwijderen, moet u de volgende stappen uitvoeren:

    1. Selecteer alle cellen waar u tekst wilt verwijderen.
    2. Druk op Ctrl + H om de Zoeken en vervangen dialoog.
    3. In de Zoek wat vak een van de volgende combinaties in:
      • Tekst elimineren voor een bepaald teken Typ het teken voorafgegaan door een sterretje (*char).
      • Tekst verwijderen naar een bepaald karakter typ het karakter gevolgd door een sterretje (char*).
      • Om een substring te verwijderen tussen twee personages Typ een sterretje omgeven door 2 tekens (char*char).
    4. Laat de Vervang met doos leeg.
    5. Klik op Vervang alle .

    Om bijvoorbeeld alles na een komma inclusief de komma zelf, zet een komma en een sterretje (,*) in het Zoek wat vakje, en je krijgt het volgende resultaat:

    Om een substring te verwijderen voor een komma Typ een sterretje, een komma en een spatie (*, ) in het veld Zoek wat doos.

    Merk op dat we niet zomaar een komma vervangen, maar een komma en een spatie Als uw gegevens worden gescheiden door komma's zonder spaties, gebruik dan een sterretje gevolgd door een komma (*,).

    Tekst verwijderen tussen twee komma's Gebruik een sterretje omgeven door komma's (,*,).

    Tip. Als u de namen en telefoonnummers liever gescheiden ziet door een komma, typ dan een komma (,) in de Vervangen door veld.

    Een deel van de tekst verwijderen met Flash Fill

    In moderne versies van Excel (2013 en later) is er nog een eenvoudige manier om tekst die voor of na een specifiek teken komt te wissen - de functie Flash Fill. Hier ziet u hoe het werkt:

    1. Typ in een cel naast de eerste cel met uw gegevens het verwachte resultaat en druk op Enter .
    2. Begin een geschikte waarde te typen in de volgende cel. Zodra Excel het patroon voelt in de waarden die u invoert, zal het een voorbeeld weergeven voor de resterende cellen die hetzelfde patroon volgen.
    3. Druk op de Enter-toets om de suggestie te accepteren.

    Klaar!

    Tekst verwijderen met behulp van formules

    In Microsoft Excel kunnen veel gegevensmanipulaties met behulp van ingebouwde functies ook worden uitgevoerd met een formule. In tegenstelling tot de vorige methoden brengen formules geen wijzigingen aan in de oorspronkelijke gegevens en geven ze u meer controle over de resultaten.

    Hoe verwijder je alles na een bepaald teken

    Om tekst na een bepaald teken te verwijderen, is de algemene formule:

    LINKS( cel , SEARCH(" char ", cel ) -1)

    Hier gebruiken we de SEARCH-functie om de positie van het teken te krijgen en geven die door aan de LEFT-functie, zodat die het overeenkomstige aantal tekens uit het begin van de tekenreeks haalt. Van het door SEARCH geretourneerde aantal wordt één teken afgetrokken om het scheidingsteken uit de resultaten te weren.

    Om bijvoorbeeld een deel van een tekenreeks na een komma te verwijderen, voert u de onderstaande formule in B2 in en sleept u deze naar beneden via B7:

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

    Hoe verwijder je alles vóór een bepaald teken

    Om een deel van een tekststring vóór een bepaald teken te wissen, is de algemene formule:

    RECHT( cel , LEN( cel ) - ZOEK(" char ", cel ))

    Ook hier berekenen we de positie van het doelteken met behulp van SEARCH, trekken die af van de totale stringlengte die LEN oplevert, en geven het verschil door aan de functie RIGHT, zodat die zoveel tekens van het einde van de string haalt.

    Bijvoorbeeld, om tekst voor een komma te verwijderen, is de formule:

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

    In ons geval wordt de komma gevolgd door een spatie. Om voorloopspaties in de resultaten te vermijden, wikkelen we de kernformule in de TRIM-functie:

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

    Opmerkingen:

    • Beide bovenstaande voorbeelden gaan ervan uit dat er slechts één geval van het scheidingsteken in de oorspronkelijke string. Als er meerdere voorkomens zijn, wordt tekst verwijderd voor/na de eerste plaats .
    • De functie ZOEKEN is niet hoofdlettergevoelig , wat betekent dat het geen verschil maakt tussen kleine letters en hoofdletters. Als uw specifieke teken een letter is en u wilt onderscheid maken tussen de hoofdletters, gebruik dan de hoofdlettergevoelig Zoekfunctie in plaats van ZOEKEN.

    Hoe tekst verwijderen na het N-de voorkomen van een teken

    In situaties waarin een bronstring meerdere instanties van het scheidingsteken bevat, kan het nodig zijn tekst te verwijderen na een specifieke instantie. Gebruik hiervoor de volgende formule:

    LINKS( cel , FIND("#", SUBSTITUTE( cel , " char ", "#", n )) -1)

    Waar n is het voorkomen van het teken waarna de tekst moet worden verwijderd.

    De interne logica van deze formule vereist het gebruik van een teken dat nergens in de brongegevens voorkomt, een hashteken (#) in ons geval. Als dit teken voorkomt in uw gegevensverzameling, gebruik dan iets anders in plaats van "#".

    Bijvoorbeeld, om alles na de 2e komma in A2 (en de komma zelf) te verwijderen, is de formule:

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

    Hoe deze formule werkt:

    Het belangrijkste deel van de formule is de FIND-functie die de positie van het n-de scheidingsteken (komma in ons geval) berekent. Hier volgt hoe:

    We vervangen de 2e komma in A2 door een hash-symbool (of een ander teken dat niet voorkomt in uw gegevens) met behulp van SUBSTITUTE:

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

    De resulterende string gaat naar het 2e argument van FIND, dus het vindt de positie van "#" in die string:

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

    FIND vertelt ons dat "#" het 13e teken in de string is. Om het aantal tekens ervoor te weten, trek je er gewoon 1 van af, en krijg je 12 als resultaat:

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

    Dit nummer gaat rechtstreeks naar de num_chars argument van LINKS met de vraag de eerste 12 tekens uit A2 te halen:

    =LEFT(A2, 12)

    Dat is het!

    Hoe tekst verwijderen vóór het N-de voorkomen van een karakter

    De algemene formule om een substring voor een bepaald teken te verwijderen is:

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

    Bijvoorbeeld, om tekst voor de 2e komma in A2 weg te strepen, is de formule:

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

    Om een voorloopspatie te elimineren, gebruiken we opnieuw de TRIM-functie als wrapper:

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

    Hoe deze formule werkt:

    Kortom, we zoeken uit hoeveel tekens er na het n-de scheidingsteken staan en halen er rechts een substring van de overeenkomstige lengte uit. Hieronder wordt de formule uitgesplitst:

    Eerst vervangen we de 2e komma in A2 door een hashteken:

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

    De resulterende string gaat naar de tekst argument van RECHTS:

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

    Vervolgens moeten we bepalen hoeveel tekens we uit het einde van de string halen. Hiervoor vinden we de positie van het hash-symbool in de bovenstaande string (die 13 is):

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

    En trek het af van de totale lengte van de string (die gelijk is aan 28):

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

    Het verschil (15) gaat naar het tweede argument van RIGHT om het de laatste 15 tekens van de string in het eerste argument te geven:

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

    De uitvoer is een substring " (102) 123-4568", die heel dicht bij de gewenste uitkomst ligt, behalve een voorloopspatie. We gebruiken dus de TRIM-functie om die weg te werken.

    Hoe tekst verwijderen na het laatste voorkomen van een teken

    Indien uw waarden worden gescheiden door een variabel aantal scheidingstekens, wilt u misschien alles na het laatste geval van dat scheidingsteken verwijderen. Dat kan met de volgende formule:

    LINKS( cel , FIND("#", SUBSTITUTE( cel , " char ", "#", LEN( cel ) - LEN(SUBSTITUTE( cel , " char ", "")))) -1)

    Stel dat kolom A verschillende informatie over werknemers bevat, maar dat de waarde na de laatste komma altijd een telefoonnummer is. Uw doel is om telefoonnummers te verwijderen en alle andere gegevens te behouden.

    Om het doel te bereiken, kunt u tekst na de laatste komma in A2 verwijderen met deze formule:

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

    Kopieer de formule naar beneden in de kolom, en je krijgt dit resultaat:

    Hoe deze formule werkt:

    De essentie van de formule is dat we de positie van het laatste scheidingsteken (komma) in de string bepalen en een substring van links naar het scheidingsteken trekken. Het verkrijgen van de positie van het scheidingsteken is het lastigste deel, en hier is hoe we het aanpakken:

    Eerst zoeken we uit hoeveel komma's er in de oorspronkelijke string staan. Daartoe vervangen we elke komma door niets ("") en geven we de resulterende string door aan de LEN-functie:

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

    Voor A2 is het resultaat 35, het aantal tekens in A2 zonder komma.

    Trek bovenstaand getal af van de totale lengte van de string (38 tekens):

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

    ... en je krijgt 3, dat is het totale aantal komma's in A2 (en ook het rangtelwoord van de laatste komma).

    Vervolgens gebruikt u de reeds bekende combinatie van de functies FIND en SUBSTITUTE om de positie van de laatste komma in de string te bepalen. Het nummer van de instantie (3e komma in ons geval) wordt geleverd door de bovengenoemde formule LEN SUBSTITUTE:

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

    Het blijkt dat de 3e komma het 23e teken is in A2, wat betekent dat we er 22 tekens voor moeten halen. Dus zetten we de bovenstaande formule min 1 in de num_chars argument van LINKS:

    LINKS(A2, 23-1)

    Hoe tekst verwijderen vóór de laatste keer dat een teken voorkomt

    Om alles vóór het laatste geval van een specifiek teken te wissen, is de algemene formule:

    RECHT( cel , LEN( cel ) - FIND("#", SUBSTITUTE( cel , " char ", "#", LEN( cel ) - LEN(SUBSTITUTE( cel , " char ", "")))))

    In onze voorbeeldtabel, om tekst voor de laatste komma te wissen, neemt de formule deze vorm aan:

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

    Als finishing touch nestelen we het in de TRIM-functie om voorloopspaties te elimineren:

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

    Hoe deze formule werkt:

    Kortom, we krijgen de positie van de laatste komma zoals uitgelegd in het vorige voorbeeld en trekken die af van de totale lengte van de string:

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

    Als resultaat krijgen we het aantal tekens na de laatste komma en geven dat door aan de functie RECHTS, zodat die zoveel tekens van het einde van de tekenreeks haalt.

    Aangepaste functie om tekst aan weerszijden van een teken te verwijderen

    Zoals u in de bovenstaande voorbeelden hebt gezien, kunt u bijna elk gebruiksgeval oplossen door Excel's eigen functies in verschillende combinaties te gebruiken. Het probleem is dat u een handvol lastige formules moet onthouden. Hmm, wat als we onze eigen functie schrijven om alle scenario's te dekken? Klinkt als een goed idee. Dus voeg de volgende VBA-code toe aan uw werkmap (de gedetailleerde stappen om VBA in Excel in te voegen zijnhier):

    Functie 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

    Onze functie heet RemoveText en het heeft de volgende syntaxis:

    RemoveText(string, delimiter, occurrence, is_after)

    Waar:

    String - is de originele tekststring. Kan worden voorgesteld door een celverwijzing.

    Scheidingsteken - het teken waarvóór/waarna tekst moet worden verwijderd.

    Voorval - de instantie van het scheidingsteken.

    Is_after - een Booleaanse waarde die aangeeft aan welke kant van het scheidingsteken tekst moet worden verwijderd. Kan een enkel teken of een reeks tekens zijn.

    • TRUE - verwijdert alles na het scheidingsteken (inclusief het scheidingsteken zelf).
    • FALSE - verwijdert alles vóór het scheidingsteken (inclusief het scheidingsteken zelf).

    Zodra de code van de functie in uw werkmap is ingevoegd, kunt u substrings uit cellen verwijderen met behulp van compacte en elegante formules.

    Bijvoorbeeld, om alles na de 1e komma in A2 te wissen, is de formule in B2:

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

    Om alles voor de 1e komma in A2 te verwijderen, is de formule in C2:

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

    Aangezien onze aangepaste functie een tekenreeks voor het scheidingsteken zetten we een komma en een spatie (", ") in het tweede argument om de moeite van het achteraf wegsnijden van voorloopspaties te besparen.

    Onze aangepaste functie werkt prachtig, nietwaar? Maar als je denkt dat dit de allesomvattende oplossing is, heb je het volgende voorbeeld nog niet gezien :)

    Verwijder alles voor, na of tussen tekens

    Om nog meer opties te krijgen voor het verwijderen van individuele tekens of tekst uit meerdere cellen, per overeenkomst of positie, voegt u onze Ultimate Suite toe aan uw Excel-toolbox.

    Hier gaan we dieper in op de Verwijderen per positie functie op de Ablebits gegevens tab> Tekst groep> Verwijder .

    Hieronder zullen wij de twee meest voorkomende scenario's behandelen.

    Alles voor of na bepaalde tekst verwijderen

    Stel dat al uw bronreeksen een gemeenschappelijk woord of tekst bevatten en u wilt alles voor of na die tekst verwijderen. Selecteer daarvoor uw brongegevens, voer de opdracht Verwijderen per positie gereedschap, en configureer het zoals hieronder getoond:

    1. Selecteer de Alle tekens voor tekst of Alle tekens na de tekst optie en typ de sleuteltekst (of het teken) in het vak ernaast.
    2. Afhankelijk van of hoofdletters en kleine letters als verschillende of dezelfde tekens moeten worden behandeld, vinkt u de optie Hoofdlettergevoelig doos.
    3. Hit Verwijder .

    In dit voorbeeld verwijderen we alle tekens die voorafgaan aan het woord "fout" in de cellen A2:A8:

    En krijgen precies het resultaat dat we zoeken:

    Tekst tussen twee tekens verwijderen

    Als er irrelevante informatie tussen 2 specifieke tekens staat, kunt u die hier snel verwijderen:

    1. Kies Verwijder alle substrings en typ twee tekens in de onderstaande vakjes.
    2. Als de "tussen"-tekens ook moeten worden verwijderd, controleer dan de Inclusief scheidingstekens doos.
    3. Klik op Verwijder .

    Als voorbeeld wissen we alles tussen twee tilde-tekens (~), en krijgen we de perfect opgeschoonde strings als resultaat:

    Om andere nuttige functies van deze multifunctionele tool uit te proberen, moedig ik u aan een evaluatieversie te downloaden aan het einde van dit bericht. Bedankt voor het lezen en hopelijk tot volgende week op onze blog!

    Beschikbare downloads

    Eerste of laatste tekens verwijderen - voorbeelden (.xlsm-bestand)

    Ultimate Suite - proefversie (.exe bestand)

    Michael Brown is een toegewijde technologieliefhebber met een passie voor het vereenvoudigen van complexe processen met behulp van softwaretools. Met meer dan tien jaar ervaring in de technische industrie heeft hij zijn vaardigheden in Microsoft Excel en Outlook, evenals Google Spreadsheets en Documenten aangescherpt. Michael's blog is gewijd aan het delen van zijn kennis en expertise met anderen, met eenvoudig te volgen tips en tutorials voor het verbeteren van de productiviteit en efficiëntie. Of je nu een doorgewinterde professional of een beginner bent, Michaels blog biedt waardevolle inzichten en praktisch advies om het meeste uit deze essentiële softwaretools te halen.