INHOUDSOPGAWE
In die onlangse paar artikels het ons na verskillende maniere gekyk om karakters uit stringe in Excel te verwyder. Vandag gaan ons nog een gebruiksgeval ondersoek - hoe om alles voor of na 'n spesifieke karakter uit te vee.
Vee teks voor, na of tussen 2 karakters uit met Find & Vervang
Vir datamanipulasies in veelvuldige selle is Soek en vervang die regte hulpmiddel. Om 'n deel van 'n string voor of na 'n spesifieke karakter te verwyder, is hierdie stappe om uit te voer:
- Kies al die selle waar jy teks wil uitvee.
- Druk Ctrl + H om die Vind en vervang -dialoog oop te maak.
- In die Vind wat -boks, voer een van die volgende kombinasies in:
- Om teks <11 te elimineer>voor 'n gegewe karakter , tik die karakter wat deur 'n asterisk (*char) voorafgegaan word.
- Om teks na 'n sekere karakter te verwyder, tik die karakter gevolg deur 'n asterisk (char) *).
- Om 'n substring tussen twee karakters te skrap, tik 'n sterretjie omring deur 2 karakters (char*char).
- Los die Vervang met blokkie leeg.
- Klik Vervang alles .
Om byvoorbeeld te verwyder alles na 'n komma insluitend die komma self, plaas 'n komma en 'n sterretjieteken (,*) in die Vind wat blokkie, en jy sal die volgende resultaat kry:
Om 'n substring voor 'n komma te skrap, tik 'n asterisk, 'n komma,alles na die 1ste komma in A2, die formule in B2 is:
=RemoveText(A3, ", ", 1, TRUE)
Om alles voor die 1ste komma in A2 uit te vee, is die formule in C2:
=RemoveText(A3, ", ", 1, FALSE)
Aangesien ons pasgemaakte funksie 'n string vir die skeidingsteken aanvaar, plaas ons 'n komma en 'n spasie (", ") in die 2de argument om die moeite te spaar om voorste spasies daarna af te sny.
Ons pasgemaakte funksie werk pragtig, nie waar nie? Maar as jy dink dit is die omvattende oplossing, het jy nog nie die volgende voorbeeld gesien nie :)
Vee alles uit voor, ná of tussen karakters
Om nog meer opsies te kry om individuele karakters te verwyder of teks van veelvuldige selle, volgens pasmaat of posisie, voeg ons Ultimate Suite by jou Excel-nutsgoedkas.
Hier sal ons die Verwyder volgens posisie -kenmerk wat op die
Hieronder sal ons die twee dek mees algemene scenario's.
Verwyder alles voor of na sekere teks
Gestel al jou bronstringe bevat een of ander algemene woord of teks en jy wil alles voor of na daardie teks uitvee. Om dit te laat doen, kies jou brondata, hardloop die Verwyder volgens Posisie -nutsding en stel dit op soos hieronder getoon:
- Kies die Alle karakters voor teks of Alle karakters na teks opsie en tik die sleutelteks (of karakter) in die blokkie volgende indaaraan.
- Afhangende van of hoofletters en kleinletters as verskillende of dieselfde karakters hanteer moet word, merk of ontmerk die Hooflettergevoelig blokkie.
- Tik Verwyder .
In hierdie voorbeeld verwyder ons alle karakters wat die woord "fout" voorafgaan in selle A2:A8:
En kry presies die resultaat waarna ons soek:
Verwyder teks tussen twee karakters
In situasies wanneer irrelevante inligting tussen 2 spesifieke karakters is, is hier hoe jy kan dit vinnig uitvee:
- Kies Verwyder alle substringe en tik twee karakters in die onderstaande blokkies in.
- As die "tussen" karakters ook verwyder moet word , merk die Insluitende skeidings -blokkie.
- Klik Verwyder .
As 'n voorbeeld, ons vee alles tussen twee tilde-karakters (~) uit en kry die perfek skoongemaakte snare as die resultaat:
Om ander nuttige kenmerke te probeer wat by hierdie multifunksionele instrument, ek moedig jou aan om 'n e waardasie weergawe aan die einde van hierdie pos. Dankie dat jy gelees het en hoop om jou volgende week op ons blog te sien!
Beskikbare aflaaie
Verwyder eerste of laaste karakters - voorbeelde (.xlsm-lêer)
Ultimate Suite - proefweergawe (.exe-lêer)
en 'n spasie (*, ) in die Vind wat-blokkie.Let asseblief op dat ons nie net 'n komma vervang nie, maar 'n komma en 'n spasie om te verhoed dat lei spasies in die resultate. As jou data deur kommas sonder spasies geskei word, gebruik dan 'n asterisk gevolg deur 'n komma (*,).
Om teks tussen twee kommas uit te vee , gebruik 'n asterisk omring deur kommas (,*,).
Wenk. As jy liewer die name en telefoonnommers deur 'n komma geskei wil hê, tik dan 'n komma (,) in die Vervang met -veld.
Verwyder 'n gedeelte van teks deur gebruik te maak van Flash Fill
In moderne weergawes van Excel (2013 en later), is daar nog een maklike manier om teks wat 'n spesifieke karakter voorafgaan of volg, uit te wis - die Flash Fill-kenmerk. So werk dit:
- In 'n sel langs die eerste sel met jou data, tik die verwagte resultaat en druk Enter .
- Begin om 'n gepaste waarde in die volgende sel te tik. Sodra Excel die patroon voel in die waardes wat jy invoer, sal dit 'n voorskou vir die oorblywende selle vertoon wat dieselfde patroon volg.
- Tik die Enter-sleutel om die voorstel te aanvaar.
Klaar!
Verwyder teks deur formules te gebruik
In Microsoft Excel kan baie datamanipulasies wat uitgevoer word deur gebruik te maak van ingeboude kenmerke ook met 'n formule bewerkstellig word. Anders as die vorige metodes, maak formules geen veranderinge aan die oorspronklike data nie en gee dit jou meer beheer oordie resultate.
Hoe om alles ná 'n spesifieke karakter te verwyder
Om teks ná 'n spesifieke karakter uit te vee, is die generiese formule:
LINKS( sel , SOEK (" char ", sel ) -1)Hier gebruik ons die SEARCH-funksie om die posisie van die karakter te kry en dit na die LINKER-funksie deur te gee, sodat dit onttrek die ooreenstemmende aantal karakters vanaf die begin van die string. Een karakter word afgetrek van die getal wat deur SEARCH teruggegee word om die skeidingsteken van die resultate uit te sluit.
Om byvoorbeeld 'n deel van 'n string na 'n komma te verwyder, voer jy die onderstaande formule in B2 in en sleep dit af deur B7 :
=LEFT(A2, SEARCH(",", A2) -1)
Hoe om alles voor 'n spesifieke karakter te verwyder
Om 'n gedeelte van 'n teksstring voor 'n sekere karakter te verwyder, moet die generiese formule is:
REGS( sel , LEN( sel ) - SOEK(" karakter ", sel ))Hier bereken ons weer die posisie van die teikenkarakter met behulp van SEARCH, trek dit af van die totale stringlengte wat deur LEN teruggestuur word en gee die verskil na die REGTE funksie, sodat dit soveel karakters van die einde van die string.
Om byvoorbeeld teks voor 'n komma te verwyder, is die formule:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
In ons geval word die komma gevolg deur 'n spasiekarakter. Om voorste spasies in die resultate te vermy, draai ons die kernformule in die TRIM-funksie:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))
Notas:
- Albeivan die bogenoemde voorbeelde aanvaar dat daar slegs een geval van die skeidingsteken in die oorspronklike string is. As daar veelvuldige gevalle is, sal teks voor/na die eerste instansie verwyder word.
- Die SOEK-funksie is nie hooflettersensitief nie , wat beteken dat dit geen verskil maak tussen kleinletters en hoofletters. As jou spesifieke karakter 'n letter is en jy wil die letterkas onderskei, gebruik dan die hooflettergevoelig FIND-funksie in plaas van SOEK.
Hoe om teks na Nde voorkoms uit te vee van 'n karakter
In situasie wanneer 'n bronstring veelvuldige gevalle van die skeidingsteken bevat, sal jy dalk 'n behoefte hê om teks na 'n spesifieke instansie te verwyder. Gebruik hiervoor die volgende formule:
LINKS( sel , VIND("#", PLAASVERVANG( sel , " karakter ", "#" , n )) -1)Waar n die karakter se voorkoms is waarna teks verwyder moet word.
Die interne logika van hierdie formule vereis die gebruik van een of ander karakter wat nêrens in die brondata voorkom nie, 'n hash-simbool (#) in ons geval. As hierdie karakter in jou datastel voorkom, gebruik dan iets anders in plaas van "#".
Om byvoorbeeld alles ná die 2de komma in A2 (en die komma self) te verwyder, is die formule:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Hoe hierdie formule werk:
Die sleuteldeel van die formule is die FIND-funksie wat die posisie van die ndeskeidingsteken (komma in ons geval). Dit is hoe:
Ons vervang die 2de komma in A2 met 'n hash-simbool (of enige ander karakter wat nie in jou data bestaan nie) met behulp van PLAASVERVANGER:
SUBSTITUTE(A2, ",", "#", 2)
Die resulterende string gaan na die 2de argument van FIND, so dit vind die posisie van "#" in daardie string:
FIND("#", "Emma, Design# (102) 123-4568")
FIND sê vir ons dat "#" die 13de karakter is in die tou. Om die aantal karakters wat dit voorafgaan te weet, trek net 1 af, en jy sal 12 kry as die resultaat:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Hierdie getal gaan direk na die num_chars argument van LINKS wat dit vra om die eerste 12 karakters uit A2 te trek:
=LEFT(A2, 12)
Dit is dit!
Hoe om teks uit te vee voor Nde voorkoms van 'n karakter
Die generiese formule om 'n substring voor 'n sekere karakter te verwyder is:
REGS(SUBSTITUTE( sel , " karakter ", "#", n ), LEN( sel ) - FIND("#", PLAASVERVANG( sel , " char ", "#", n )) -1)Om byvoorbeeld teks voor die 2de komma in A2 af te stroop, is die formule:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Om 'n voorste spasie uit te skakel, gebruik ons weer die TRIM funksioneer as 'n omhulsel:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Hoe hierdie formule werk:
Opsommend vind ons uit hoeveel karakters is na die nde skeidingsteken en onttrek 'n substring van die ooreenstemmende lengte van regs. Hieronder is die formule uiteensetting:
Eers vervang ons die 2de komma in A2 met 'n hashsimbool:
SUBSTITUTE(A2, ",", "#", 2)
Die resulterende string gaan na die teks -argument van REGS:
RIGHT("Emma, Design# (102) 123-4568", …
Volgende moet ons definieer hoeveel karakters om uit die einde van die string te onttrek. Hiervoor vind ons die posisie van die hash-simbool in die bostaande string (wat 13 is):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
En trek dit af van die totale stringlengte (wat gelyk is aan 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Die verskil (15) gaan na die tweede argument van REGS wat dit opdrag gee om die laaste 15 karakters uit die string in die eerste argument te trek:
RIGHT("Emma, Design# (102) 123-4568", 15)
Die uitvoer is 'n substring " (102) 123-4568", wat baie naby aan die verlangde uitkoms is, behalwe 'n voorste spasie. Dus, ons gebruik die TRIM-funksie om daarvan ontslae te raak.
Hoe om teks te verwyder na die laaste voorkoms van 'n karakter
In die geval dat jou waardes geskei word met 'n veranderlike aantal skeidingstekens, kan jy wil dalk alles verwyder na die laaste instansie van daardie skeidingsteken. Dit kan met die volgende formule gedoen word:
LINKS( sel , VIND("#", PLAASVERVANG( sel , " karakter ", "# ", LEN( sel ) - LEN(SUBSTITUTE( sel , " char ", "")))) -1)Veronderstel kolom A bevat verskeie inligting oor werknemers, maar die waarde na die laaste komma is altyd 'n telefoonnommer. Jou doel is om telefoonnommers te verwyder en alle ander besonderhede te hou.
Om die doel te bereik, kan jy teks ná die laaste komma in A2 hiermee verwyderformule:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Kopieer die formule in die kolom af, en jy sal hierdie resultaat kry:
Hoe dit formule werk:
Die kern van die formule is dat ons die posisie van die laaste skeidingsteken (komma) in die string bepaal en 'n substring van links tot by die skeidingsteken trek. Om die afbakener se posisie te kry is die moeilikste deel, en hier is hoe ons dit hanteer:
Eers vind ons uit hoeveel kommas daar in die oorspronklike string is. Hiervoor vervang ons elke komma met niks ("") en dien die resulterende string aan die LEN-funksie:
LEN(SUBSTITUTE(A2, ",",""))
Vir A2 is die resultaat 35, wat die aantal karakters is in A2 sonder kommas.
Trek bogenoemde getal af van die totale stringlengte (38 karakters):
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
... en jy sal 3 kry, wat die totale getal is van kommas in A2 (en ook die ranggetal van die laaste komma).
Volgende gebruik jy die reeds bekende kombinasie van die FIND- en SUBSTITUTE-funksies om die posisie van die laaste komma in die string te kry. Die instansienommer (3de komma in ons geval) word verskaf deur die bogenoemde LEN SUBSTITUTE formule:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Dit blyk dat die 3de komma die 23ste karakter in A2 is, wat beteken dat ons nodig het om 22 karakters wat dit voorafgaan te onttrek. So, ons plaas die bogenoemde formule minus 1 in die num_chars argument van LINKS:
LEFT(A2, 23-1)
Hoe om teks te verwyder voor die laaste voorkoms van 'n karakter
Om uit te veealles voor die laaste instansie van 'n spesifieke karakter, die generiese formule is:
REGS( sel , LEN( sel ) - FIND("#", PLAASVERVANG( sel , " char ", "#", LEN( sel ) - LEN(SUBSTITUTE( sel , " char ", "")))))In ons voorbeeldtabel, om teks voor die laaste komma uit te roei, neem die formule hierdie vorm aan:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
As 'n afronding, ons nes dit in die TRIM-funksie om voorste spasies uit te skakel:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Hoe hierdie formule werk:
Ter opsomming, ons kry die posisie van die laaste komma soos verduidelik in die vorige voorbeeld en trek dit af van die totale lengte van die string:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
As gevolg hiervan kry ons die getal van karakters na die laaste komma en gee dit na die REGTE funksie, so dit bring soveel karakters van die einde van die string af.
Gepasmaakte funksie om teks aan weerskante van 'n karakter te verwyder
As jy in die bogenoemde voorbeelde gesien het, kan jy byna enige gebruiksgeval oplos deur Excel se oorspronklike f te gebruik aksies in verskillende kombinasies. Die probleem is dat jy van handvol moeilike formules moet onthou. Hmm, wat as ons ons eie funksie skryf om al die scenario's te dek? Klink na 'n goeie idee. Voeg dus die volgende VBA-kode by jou werkboek (die gedetailleerde stappe om VBA in Excel in te voeg is hier):
Funksie RemoveText(str As String , delimiter As String , occurrence As Integer , is_after AsBoolean ) Dim delimiter_num, start_num, delimiter_len As Heelgetal Dim str_result As String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) Vir i = 1 Om voorkoms delimiter_num = InStr(start_num, str, 0Compare) Iftex < delimiter_num Dan begin_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 EindfunksieOns funksie is vernoem VerwyderTeks en dit het die volgende sintaksis:
VerwyderTeks(string, skeidingsteken, voorkoms, is_na)Waar:
String - is die oorspronklike teksstring. Kan deur 'n selverwysing voorgestel word.
Delimiter - die karakter voor/waarna teks verwyder moet word.
Voorkoms - die instansie van die skeidingsteken.
Is_na - 'n Boole-waarde wat aandui aan watter kant van die skeidingsteken om teks te verwyder. Kan 'n enkele karakter of 'n reeks karakters wees.
- WAAR - vee alles uit na die skeidingsteken (insluitend die skeidingsteken self).
- ONWAAR - vee alles uit voor die skeidingsteken (insluitend die skeidingsteken). skeiding self).
Sodra die funksie se kode in jou werkboek ingevoeg is, kan jy substringe uit selle verwyder deur kompakte en elegante formules te gebruik.
Om byvoorbeeld uit te vee