Ynhâldsopjefte
Yn 'e resinte pear artikels hawwe wy ferskate manieren besjoen om tekens te ferwiderjen fan tekenrige yn Excel. Hjoed, wy sille ûndersykje noch ien gebrûk gefal - hoe te wiskjen alles foar of nei in spesifyk karakter.
Ferwiderje tekst foar, nei of tusken 2 tekens mei Find & amp; Ferfange
Foar gegevensmanipulaasjes yn meardere sellen is Fyn en ferfange it juste ark. Om in diel fan in tekenrige foar of nei in spesifyk karakter te ferwiderjen, binne dit de stappen om út te fieren:
- Selektearje alle sellen wêr't jo tekst wiskje wolle.
- Druk op Ctrl + H om it dialoochfinster Sykje en ferfange te iepenjen.
- Yn it fak Fyn wat , fier ien fan de folgjende kombinaasjes yn:
- Om tekst te eliminearjen foar in opjûn karakter , typ it karakter foarôfgeand troch in asterisk (*char).
- Om tekst nei in bepaald teken te ferwiderjen, typ it karakter folge troch in asterisk (char) *).
- Om in substring tusken twa tekens te wiskjen, typ in asterisk omjûn troch 2 tekens (char*char).
- Lit de Ferfange mei fak leech.
- Klik op Alles ferfange .
Bygelyks om te ferwiderjen alles nei in komma ynklusyf de komma sels, set in komma en in asterisk teken (,*) yn it fak Fyn wat en jo krije it folgjende resultaat:
Om in substring te wiskjen foar in komma , typ in asterisk, in komma,alles nei de 1e komma yn A2, de formule yn B2 is:
=RemoveText(A3, ", ", 1, TRUE)
Om alles foar de 1e komma yn A2 te wiskjen, is de formule yn C2:
=RemoveText(A3, ", ", 1, FALSE)
Om't ús oanpaste funksje in string akseptearret foar it skiedingsteken , sette wy in komma en in spaasje (", ") yn it 2e argumint om de muoite te besparjen om foaroansteande spaasjes dêrnei te trimmen.
Us oanpaste funksje wurket prachtich, is it net? Mar as jo tinke dat it de wiidweidige oplossing is, hawwe jo it folgjende foarbyld noch net sjoen :)
Alles wiskje foar, nei of tusken tekens
Om noch mear mooglikheden te krijen foar it fuortheljen fan yndividuele tekens of tekst út meardere sellen, op oerienkomst of posysje, foegje ús Ultimate Suite ta oan jo Excel-ark 9>Ablebits Data tab > Tekst groep > Fuortsmite .
Hjirûnder sille wy de twa dekke meast foarkommende senario's.
Alles foar of nei bepaalde tekst fuortsmite
Stel dat al jo boarnestrings in gewoan wurd of tekst befetsje en jo alles foar of nei dy tekst wiskje wolle. Om it dien te hawwen, selektearje jo boarnegegevens, útfiere it ark Ferwiderje op posysje en konfigurearje it lykas hjirûnder werjûn:
- Selektearje de Alle tekens foar tekst of Alle tekens nei tekst opsje en typ de kaaitekst (of karakter) yn it fak neistderoan.
- Ofhinklik fan oft haad- en lytse letters as ferskillende of deselde tekens behannele wurde moatte, markearje of wiskje it fakje Case-sensitive .
- Hit Fuortsmite .
Yn dit foarbyld fuortsmite wy alle tekens foarôfgeand oan it wurd "flater" yn sellen A2:A8:
En krije krekt it resultaat dat wy sykje:
Tekst fuortsmite tusken twa tekens
Yn situaasje as irrelevante ynformaasje is tusken 2 spesifike tekens, hjir is hoe jo kinne it fluch wiskje:
- Kies Alle substrings fuortsmite en typ twa tekens yn 'e ûndersteande fakjes.
- As de "tusken" tekens ek fuortsmiten wurde moatte . in foarbyld, wy wiskje alles tusken twa tilde-karakters (~), en krije de perfekt skjinmakke snaren as resultaat:
Om oare nuttige funksjes te probearjen dy't opnommen binne mei dizze multyfunksjonele ark, Ik moedigje jo te downloaden in e wurdearring ferzje oan 'e ein fan dizze post. Tankewol foar it lêzen en hoopje jo nije wike op ús blog te sjen!
Beskikbere downloads
Earste of lêste tekens fuortsmite - foarbylden (.xlsm-bestân)
Ultimate Suite - proefferzje (.exe-bestân)
en in spaasje (*, ) yn it fak Fyn wat .Tink derom dat wy net allinich in komma, mar in komma en in spaasje ferfange om liede te foarkommen spaasjes yn 'e resultaten. As jo gegevens wurde skieden troch komma's sûnder spaasjes, brûk dan in asterisk folge troch in komma (*,).
Om tekst te wiskjen tusken twa komma's , brûk in asterisk omjûn troch komma's (,*,).
Tip. As jo leaver de nammen en telefoannûmers skieden hawwe troch in komma, typ dan in komma (,) yn it fjild Ferfange mei .
In diel fan tekst fuortsmite mei Flash Fill
Yn moderne ferzjes fan Excel (2013 en letter), is d'r noch ien maklike manier om tekst út te wiskjen dy't in spesifyk karakter foarkomt of folget - de Flash Fill-funksje. Hjir is hoe't it wurket:
- Yn in sel neist de earste sel mei jo gegevens, typ it ferwachte resultaat en druk op Enter .
- Begjin mei it typen fan in passende wearde yn de folgjende sel. Sadree't Excel it patroan fielt yn 'e wearden dy't jo ynfiere, sil it in foarbyld sjen litte foar de oerbleaune sellen dy't itselde patroan folgje.
- Tik op de Enter-kaai om de suggestje te akseptearjen.
Dien!
Tekst fuortsmite mei formules
Yn Microsoft Excel kinne in protte gegevensmanipulaasjes dy't útfierd wurde troch it brûken fan ynboude funksjes ek mei in formule te berikken. Oars as de foarige metoaden meitsje formules gjin feroarings oan 'e orizjinele gegevens en jouwe jo mear kontrôle oerde resultaten.
Hoe kin ik alles fuortsmite nei in spesifyk karakter
Om tekst nei in bepaald karakter te wiskjen, is de generyske formule:
LEFT( sel , SEARCH (" char ", sel ) -1)Hjir brûke wy de SEARCH-funksje om de posysje fan it karakter te krijen en it troch te jaan oan de LEFT-funksje, sadat it ekstrakt it oerienkommende oantal karakters fan it begjin fan de tekenrige. Ien karakter wurdt lutsen fan it nûmer dat troch SEARCH weromjûn wurdt om it skiedingsteken út de resultaten út te sluten.
Om bygelyks in diel fan in tekenrige nei in komma te ferwiderjen, fiere jo de ûndersteande formule yn yn B2 en sleep it nei ûnderen troch B7 :
=LEFT(A2, SEARCH(",", A2) -1)
Hoe kinne jo alles foar in spesifyk karakter fuortsmite
Om in diel fan in tekststring foar in bepaald teken te wiskjen, generyske formule is:
RJOCHTS( sel , LEN( sel ) - SEARCH(" char ", sel ))Hjir berekkenje wy wer de posysje fan it doelkarakter mei help fan SEARCH, subtrahearje it fan 'e totale stringlange weromjûn troch LEN, en jouwe it ferskil troch nei de RIGHT-funksje, sadat it safolle tekens fan' e ein fan 'e string.
Om bygelyks tekst foar in komma te ferwiderjen, is de formule:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
Yn ús gefal wurdt de komma folge troch in spaasje. Om liedende spaasjes yn 'e resultaten te foarkommen, ferpakke wy de kearnformule yn' e TRIM-funksje:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))
Opmerkingen:
- Beidefan 'e boppesteande foarbylden geane der fan út dat d'r mar ien eksimplaar is fan it skiedingsteken yn 'e oarspronklike tekenrige. As der meardere foarfallen binne, sil tekst fuortsmiten wurde foar/nei de earste eksimplaar .
- De SEARCH-funksje is net hoofdlettergefoelich , wat betsjut dat it gjin ferskil makket tusken lytse letters en haadletters. As jo spesifyk karakter in letter is en jo wolle de letter-case-gefoel ûnderskiede, brûk dan de case-sensitive FIND-funksje ynstee fan SEARCH.
Hoe tekst wiskje nei N-de foarkommen fan in karakter
Yn situaasje as in boarnestring meardere eksimplaren fan it skiedingsteken befettet, kinne jo nedich wêze om tekst nei in spesifyk eksimplaar te ferwiderjen. Brûk hjirfoar de folgjende formule:
LEFT( sel , FIND("#", SUBSTITUTE( sel , " char ", "#" , n )) -1)Dêr't n it foarkommen fan it karakter is wêrnei't tekst fuortsmiten wurdt.
De ynterne logika fan dizze formule fereasket it brûken fan wat karakter dat is net oanwêzich oeral yn de boarne gegevens, in hash symboal (#) yn ús gefal. As dit karakter yn jo gegevensset foarkomt, brûk dan wat oars yn plak fan "#".
Om bygelyks alles nei de 2e komma yn A2 (en de komma sels) te ferwiderjen, is de formule:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Hoe wurket dizze formule:
It wichtichste diel fan 'e formule is de FIND-funksje dy't de posysje fan de ndelimiter (komma yn ús gefal). Hjir is hoe:
Wy ferfange de 2e komma yn A2 troch in hash-symboal (of in oar karakter dat net yn jo gegevens bestiet) mei help fan SUBSTITUTE:
SUBSTITUTE(A2, ",", "#", 2)
De resulterende tekenrige giet nei it 2e argumint fan FIND, dus it fynt de posysje fan "#" yn dy tekenrige:
FIND("#", "Emma, Design# (102) 123-4568")
FIND fertelt ús dat "#" it 13e karakter is yn de string. Om it oantal tekens foarôf te witten, lûk gewoan 1 ôf, en jo krije 12 as resultaat:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Dit nûmer giet direkt nei it num_chars argumint fan LEFT dy't it freget om de earste 12 tekens fan A2 te lûken:
=LEFT(A2, 12)
Dat is it!
Hoe tekst wiskje foardat it N-de foarkommen fan in karakter
De generike formule om in substring foar in bepaald teken te ferwiderjen is:
RIGHT(SUBSTITUTE( sel , " char ", "#", n ), LEN( sel ) - FIND("#", SUBSTITUTE( sel , " char ", "#", n )) -1)Om bygelyks tekst foar de 2e komma yn A2 ôf te stripjen, is de formule:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Om in foaroansteande spaasje te eliminearjen, brûke wy wer de TRIM funksje as wrapper:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Hoe't dizze formule wurket:
Gearfetsjend fine wy út hoefolle tekens binne nei de n-de delimiter en extract in substring fan de oerienkommende lingte fan rjochts. Hjirûnder is de formule-útdieling:
Earst ferfange wy de 2e komma yn A2 troch in hashsymboal:
SUBSTITUTE(A2, ",", "#", 2)
De resultearjende tekenrige giet nei it tekst argumint fan RIGHT:
RIGHT("Emma, Design# (102) 123-4568", …
Dêrnei moatte wy definiearje hoefolle tekens út 'e ein fan' e tekenrige ekstrahearje moatte. Hjirfoar fine wy de posysje fan it hash-symboal yn 'e boppesteande tekenrige (dat is 13):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
En subtrahearje it fan 'e totale tekenrige (dy't gelyk is oan 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
It ferskil (15) giet nei it twadde argumint fan RIGHT dat it ynstruearret om de lêste 15 tekens fan 'e tekenrige yn it earste argumint te lûken:
RIGHT("Emma, Design# (102) 123-4568", 15)
De útfier is in substring " (102) 123-4568", dy't tige ticht by de winske útkomst is, útsein in liedende romte. Dus, wy brûke de TRIM-funksje om it kwyt te reitsjen.
Hoe kinne jo tekst fuortsmite nei it lêste foarkommen fan in karakter
Yn gefal jo wearden skieden binne mei in fariabele oantal skiedingstekens, jo kin alles fuortsmite nei it lêste eksimplaar fan dat skiedingsteken. Dit kin dien wurde mei de folgjende formule:
LEFT( sel , FIND("#", SUBSTITUTE( sel , " char ", "# ", LEN( sel ) - LEN(SUBSTITUTE( sel , " char ", "")))) -1)Stel kolom A befettet ferskate ynformaasje oer meiwurkers, mar de wearde nei de lêste komma is altyd in telefoannûmer. Jo doel is om telefoannûmers te ferwiderjen en alle oare details te behâlden.
Om it doel te berikken kinne jo tekst nei de lêste komma yn A2 fuortsmite mei dizzeformule:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Kopiearje de formule nei ûnderen yn 'e kolom, en jo krije dit resultaat:
Hoe dit formule wurket:
De essinsje fan 'e formule is dat wy de posysje fan 'e lêste delimiter (komma) yn 'e tekenrige bepale en in substring fan links nei de delimiter lûke. De posysje fan it skiedingsteken krije is it lestichste diel, en hjir is hoe't wy it behannelje:
Earst fine wy út hoefolle komma's der binne yn 'e oarspronklike tekenrige. Hjirfoar ferfange wy elke komma mei neat ("") en tsjinje de resultearjende tekenrige oan 'e LEN-funksje:
LEN(SUBSTITUTE(A2, ",",""))
Foar A2 is it resultaat 35, dat is it oantal karakters yn A2 sûnder komma's.
Trek it boppesteande nûmer ôf fan 'e totale tekenrige lingte (38 tekens):
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
... en jo krije 3, dat is it totale oantal fan komma's yn A2 (en ek it rangnûmer fan de lêste komma).
Dêrnei brûke jo de al fertroude kombinaasje fan de funksjes FIND en SUBSTITUTE om de posysje fan de lêste komma yn de tekenrige te krijen. It eksimplaarnûmer (3e komma yn ús gefal) wurdt levere troch de hjirboppe neamde LEN SUBSTITUTE formule:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
It liket derop dat de 3e komma it 23e karakter yn A2 is, wat betsjut dat wy nedich binne om 22 tekens foarôf te heljen. Dat, wy sette de boppesteande formule minus 1 yn it num_chars argumint fan LEFT:
LEFT(A2, 23-1)
Hoe kinne jo tekst fuortsmite foar it lêste foarkommen fan in karakter
Om te wiskjenalles foar it lêste eksimplaar fan in spesifyk karakter, de generyske formule is:
RIGHT( sel , LEN( sel ) - FIND("#", FERGESE( sel , " char ", "#", LEN( sel ) - LEN(SUBSTITUTE( sel , " char ", "")))))Yn ús foarbyldtabel, om tekst foar de lêste komma te wiskjen, nimt de formule dizze foarm oan:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
As finishing touch, wy nêst it yn 'e TRIM-funksje om liedende spaasjes te eliminearjen:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Hoe wurket dizze formule:
Gearfetsjend krije wy de posysje fan 'e lêste komma lykas útlein yn it foarige foarbyld en subtrahearje it fan 'e totale lingte fan 'e tekenrige:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
As resultaat krije wy it oantal tekens nei de lêste komma en trochjaan oan de RIGHT funksje, sadat it bringt dat in protte tekens fan 'e ein fan' e tekenrige.
Aanpaste funksje om tekst te ferwiderjen oan beide kanten fan in karakter
As Jo hawwe sjoen yn 'e boppesteande foarbylden, jo kinne hast alle gebrûksgefallen oplosse troch de native f fan Excel te brûken unctions yn ferskate kombinaasjes. It probleem is dat jo moatte ûnthâlde fan in hânfol lestige formules. Hmm, wat as wy ús eigen funksje skriuwe om alle senario's te dekken? Klinkt as in goed idee. Foegje dus de folgjende VBA-koade ta oan jo wurkboek (de detaillearre stappen om VBA yn Excel yn te foegjen binne hjir):
Funksje RemoveText(str As String , delimiter As String , occurrence As Integer , is_after AsBoolean ) 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) Foar i = 1 To occurrence delimiter_num = InStr(start_num, str, delimiter, vbTex) Iftex < delimiter_num Dan start_num = delimiter_num + delimiter_len End As Folgjende i As 0 & lt; 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 FunctionUs funksje hjit RemoveText en it hat de folgjende syntaksis:
RemoveText(string, delimiter, occurrence, is_after)Wêr:
String - is de oarspronklike tekststring. Kin wurde fertsjintwurdige troch in selferwizing.
Delimiter - it teken foar/dêrnei't tekst fuortsmiten wurde moat.
Occurrence - it eksimplaar fan de delimiter.
Is_after - in Booleaanske wearde dy't oanjout oan hokker kant fan it skiedingsteken tekst fuortsmiten wurde moat. Kin in inkeld karakter wêze as in folchoarder fan tekens.
- TRUE - wiskje alles nei it skiedingsteken (ynklusyf it skiedingsteken sels).
- FALSE - wiskje alles foar it skiedingsteken (ynklusyf de skiedingsteken). delimiter sels).
As de funksje fan funksje ienris yn jo wurkboek ynfoege is, kinne jo substrings út sellen fuortsmite mei kompakte en elegante formules.
Bygelyks om te wiskjen