Kazalo
V zadnjih nekaj člankih smo si ogledali različne načine odstranjevanja znakov iz nizov v Excelu. Danes bomo raziskali še en primer uporabe - kako odstraniti vse pred ali za določenim znakom.
Brisanje besedila pred, za ali med dvema znakoma s funkcijo Poišči & amp; Zamenjaj
Za ravnanje s podatki v več celicah je pravo orodje poišči in zamenjaj. Če želite odstraniti del niza, ki je pred določenim znakom ali za njim, morate izvesti naslednje korake:
- Izberite vse celice, v katerih želite izbrisati besedilo.
- Pritisnite kombinacijo tipk Ctrl + H, da odprete Poišči in zamenjaj dialog.
- V Poiščite, kaj vnesite eno od naslednjih kombinacij:
- Odstranitev besedila pred danim znakom , vnesite znak, pred katerim je zvezdica (*char).
- Odstranjevanje besedila po določenem znaku , vnesite znak, ki mu sledi zvezdica (char*).
- Brisanje podreza med dvema znakoma , vnesite zvezdico, obdano z dvema znakoma (char*char).
- Pustite Zamenjava s spletno stranjo . polje je prazno.
- Kliknite . Zamenjajte vse .
Če želite na primer odstraniti vse za vejico vključno s samo vejico, vstavite vejico in znak zvezdice (,*) v Poiščite, kaj in dobili boste naslednji rezultat:
Brisanje podreza pred vejico , vnesite zvezdico, vejico in presledek (*, ) v polje Poiščite, kaj škatla.
Opazite, da ne nadomeščamo le vejice, temveč tudi vejica in presledek Če so vaši podatki ločeni z vejicami brez presledkov, uporabite zvezdico, ki ji sledi vejica (*,).
Brisanje besedila med dvema vejicama , uporabite zvezdico, obdano z vejicami (,*,).
Nasvet: Če želite, da so imena in telefonske številke ločene z vejico, vnesite vejico (,) v polje Zamenjajte z področje.
Odstranjevanje dela besedila z uporabo funkcije Flash Fill
V sodobnih različicah programa Excel (2013 in novejših) je na voljo še en preprost način za brisanje besedila, ki je pred določenim znakom ali mu sledi - funkcija Flash Fill. Tukaj je opisano njeno delovanje:
- V celico poleg prve celice s podatki vnesite pričakovani rezultat in pritisnite Enter .
- V naslednjo celico začnite vnašati ustrezno vrednost. Ko Excel zazna vzorec vrednosti, ki jih vnašate, prikaže predogled preostalih celic, ki sledijo istemu vzorcu.
- S pritiskom na tipko Enter sprejmite predlog.
Končano!
Odstranjevanje besedila z uporabo formul
V programu Microsoft Excel lahko številne manipulacije s podatki, ki jih opravite z uporabo vgrajenih funkcij, izvedete tudi s formulo. Za razliko od prejšnjih metod formule ne spreminjajo prvotnih podatkov in omogočajo večji nadzor nad rezultati.
Kako odstraniti vse, kar sledi določenemu znaku
Če želite izbrisati besedilo za določenim znakom, je splošna formula:
LEVA( celica , SEARCH(" char ", celica ) -1)V tem primeru s funkcijo SEARCH pridobimo položaj znaka in ga posredujemo funkciji LEFT, ki z začetka niza izloči ustrezno število znakov. Od števila, ki ga vrne funkcija SEARCH, odštejemo en znak, da iz rezultatov izključimo ločilo.
Če želite na primer odstraniti del niza za vejico, vnesite spodnjo formulo v B2 in jo povlecite navzdol do B7:
=LEVO(A2, SEARCH(",", A2) -1)
Kako odstraniti vse pred določenim znakom
Če želite izbrisati del besedilnega niza pred določenim znakom, je splošna formula:
PRAVICA( celica , LEN( celica ) - SEARCH(" char ", celica ))Tudi v tem primeru s pomočjo funkcije SEARCH izračunamo položaj ciljnega znaka, ga odštejemo od skupne dolžine niza, ki jo vrne funkcija LEN, in razliko posredujemo funkciji RIGHT, ki od konca niza odvzame toliko znakov.
Če želite na primer odstraniti besedilo pred vejico, je formula naslednja:
=DESNO(A2, LEN(A2) - SEARCH(",", A2))
V našem primeru vejici sledi znak presledka. Da bi se izognili vodilnim presledkom v rezultatih, osnovno formulo zavijemo v funkcijo TRIM:
=TRIM(DESNO(A2, LEN(A2) - SEARCH(",", A2))
Opombe:
- Oba zgornja primera predpostavljata, da obstaja samo en primer razmejitvenega elementa v izvirnem nizu. Če se pojavlja večkrat, bo besedilo odstranjeno pred/za razmejitvenim elementom. prvi primer .
- Funkcija SEARCH je ni občutljivo na velikost črk , kar pomeni, da ne razlikuje med malimi in velikimi črkami. Če je določen znak črka in želite razlikovati velikost črke, uporabite , ki upošteva velike in male črke. funkcija FIND namesto funkcije SEARCH.
Kako izbrisati besedilo po N-tem pojavu znaka
Če izvorni niz vsebuje več primerov ločilnika, boste morda morali odstraniti besedilo za določenim primerom. Za to uporabite naslednjo formulo:
LEVA( celica , FIND("#", SUBSTITUTE( celica , " char ", "#", n )) -1)Kje: n je pojavljanje znaka, po katerem se odstrani besedilo.
Notranja logika te formule zahteva uporabo nekega znaka, ki ga ni nikjer v izvornih podatkih, v našem primeru je to simbol hash (#). Če se ta znak pojavlja v vašem naboru podatkov, namesto znaka # uporabite kaj drugega.
Če želite na primer odstraniti vse, kar je za drugo vejico v A2 (in samo vejico), je formula naslednja:
=LEVO(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Kako deluje ta formula:
Ključni del formule je funkcija FIND, ki izračuna položaj n-tega ločila (v našem primeru vejice):
S pomočjo SUBSTITUTE nadomestimo drugo vejico v A2 s simbolom hash (ali katerim koli drugim znakom, ki ne obstaja v vaših podatkih):
SUBSTITUTE(A2, ",", "#", 2)
Tako dobljeni niz se prikaže kot 2. argument funkcije FIND, tako da poišče položaj črke "#" v tem nizu:
FIND("#", "Emma, Design# (102) 123-4568")
FIND nam pove, da je znak "#" 13. znak v nizu. Če želite izvedeti število znakov pred njim, preprosto odštejte 1 in dobili boste rezultat 12:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Ta številka je neposredno povezana z num_chars argumenta LEFT, ki zahteva, da se iz A2 vzame prvih 12 znakov:
= LEVO (A2, 12)
To je to!
Kako izbrisati besedilo pred N-tim pojavom znaka
Splošna formula za odstranitev podreza pred določenim znakom je:
DESNO (NADOMESTEK( celica , " char ", "#", n ), LEN( celica ) - FIND("#", SUBSTITUTE( celica , " char ", "#", n )) -1)Če želite na primer odstraniti besedilo pred drugo vejico v A2, je formula naslednja:
=DESNO (SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2) -1)
Za odstranitev začetnega presledka ponovno uporabimo funkcijo TRIM kot ovojnico:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Kako deluje ta formula:
Če povzamemo, ugotovimo, koliko znakov je za n-tim razmejitvenim znakom, in izvlečemo podrejeni niz ustrezne dolžine z desne strani. Spodaj je razčlenitev formule:
Najprej zamenjamo drugo vejico v A2 s simbolom hash:
SUBSTITUTE(A2, ",", "#", 2)
Dobljeni niz se prenese v besedilo argument pravice:
RIGHT("Emma, Design# (102) 123-4568", ...
Nato moramo določiti, koliko znakov bomo izločili s konca niza. Pri tem poiščemo položaj simbola hash v zgornjem nizu (ta je 13):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
In jo odštejte od skupne dolžine niza (ki je enaka 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Razlika (15) se pošlje drugemu argumentu programa RIGHT in mu naroči, da iz niza v prvem argumentu potegne zadnjih 15 znakov:
PRAVO("Emma, Design# (102) 123-4568", 15)
Rezultat je podrejeni niz "(102) 123-4568", ki je zelo podoben želenemu rezultatu, le da ima na začetku presledek. Zato ga odstranimo s funkcijo TRIM.
Kako odstraniti besedilo po zadnjem pojavu znaka
Če so vaše vrednosti ločene s spremenljivim številom ločil, boste morda želeli odstraniti vse za zadnjim primerom tega ločila. To lahko storite z naslednjo formulo:
LEVA( celica , FIND("#", SUBSTITUTE( celica , " char ", "#", LEN( celica ) - LEN(SUBSTITUT( celica , " char ", "")))) -1)Predpostavimo, da stolpec A vsebuje različne podatke o zaposlenih, vendar je vrednost za zadnjo vejico vedno telefonska številka. Vaš cilj je odstraniti telefonske številke in ohraniti vse druge podatke.
Cilj lahko dosežete tako, da s to formulo odstranite besedilo za zadnjo vejico v A2:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Kopirajte formulo v stolpec in dobili boste naslednji rezultat:
Kako deluje ta formula:
Bistvo formule je, da določimo položaj zadnjega ločila (vejice) v nizu in potegnemo podrejen niz od leve do ločila. Določitev položaja ločila je najzahtevnejši del in tukaj je opisano, kako to storimo:
Najprej ugotovimo, koliko vejic je v prvotnem nizu. Pri tem vsako vejico nadomestimo z nič ("") in dobljeni niz posredujemo funkciji LEN:
LEN(SUBSTITUTE(A2, ",",""))
Za A2 je rezultat 35, kar je število znakov v A2 brez vejic.
Od skupne dolžine niza (38 znakov) odštejte zgornje število:
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
... in dobili boste 3, kar je skupno število vejic v A2 (in tudi vrstno število zadnje vejice).
Nato uporabite že znano kombinacijo funkcij FIND in SUBSTITUTE, da dobite položaj zadnje vejice v nizu. Številka primera (v našem primeru tretja vejica) je podana z zgoraj omenjeno formulo LEN SUBSTITUTE:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Zdi se, da je tretja vejica 23. znak v A2, kar pomeni, da moramo izločiti 22 znakov pred njo. Zato vnesemo zgornjo formulo minus 1 v num_chars argumenta LEVA:
LEVO (A2, 23-1)
Kako odstraniti besedilo pred zadnjim pojavom znaka
Če želite izbrisati vse pred zadnjim primerom določenega znaka, je splošna formula:
PRAVICA( celica , LEN( celica ) - FIND("#", SUBSTITUTE( celica , " char ", "#", LEN( celica ) - LEN(SUBSTITUT( celica , " char ", "")))))V naši vzorčni tabeli je formula za odstranitev besedila pred zadnjo vejico takšna:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Za konec ga vgradimo v funkcijo TRIM, da odpravimo začetne presledke:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Kako deluje ta formula:
Če povzamemo, dobimo položaj zadnje vejice, kot je razloženo v prejšnjem primeru, in ga odštejemo od skupne dolžine niza:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
Kot rezultat dobimo število znakov za zadnjo vejico in ga posredujemo funkciji RIGHT, tako da ta pripelje toliko znakov od konca niza.
Funkcija po meri za odstranjevanje besedila na obeh straneh znaka
Kot ste videli v zgornjih primerih, lahko z uporabo Excelovih izvirnih funkcij v različnih kombinacijah rešite skoraj vsak primer uporabe. Težava je, da si morate zapomniti peščico zapletenih formul. Hmm, kaj če napišemo lastno funkcijo, ki bo pokrila vse scenarije? Sliši se kot dobra ideja. Zato v delovni zvezek dodajte naslednjo kodo VBA (podrobni koraki za vstavljanje VBA v Excel sotukaj):
Funkcija 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 FunctionNaša funkcija se imenuje OdstraniTekst in ima naslednjo sintakso:
RemoveText(niz, razmejitev, pojav, is_after)Kje:
Niz - je izvirni besedilni niz. Lahko je predstavljen s sklicevanjem na celico.
Razmejitev - znak pred/za katerim želite odstraniti besedilo.
Dogodek - primerek razmejitvenega elementa.
Is_after - logična vrednost, ki označuje, na kateri strani razmejitvenega elementa se besedilo odstrani. Lahko je en sam znak ali zaporedje znakov.
- TRUE - izbriše vse za razmejitvenim znakom (vključno z razmejitvenim znakom).
- FALSE - izbriše vse pred ločilom (vključno s samim ločilom).
Ko je koda funkcije vstavljena v delovni zvezek, lahko s kompaktnimi in elegantnimi formulami odstranite podredja iz celic.
Če želite na primer izbrisati vse, kar je za prvo vejico v A2, je formula v B2 naslednja:
=RemoveText(A3, ", ", 1, TRUE)
Če želite izbrisati vse pred prvo vejico v A2, je formula v C2:
=RemoveText(A3, ", ", 1, FALSE)
Ker naša funkcija po meri sprejme niz za ločilo , v drugi argument vstavimo vejico in presledek (", "), da se izognemo kasnejšemu obrezovanju vodilnih presledkov.
Naša funkcija po meri deluje čudovito, kajne? Toda če mislite, da je to celovita rešitev, še niste videli naslednjega primera :)
izbrišite vse pred, za ali med znaki
Če želite pridobiti še več možnosti za odstranjevanje posameznih znakov ali besedila iz več celic po ujemanju ali položaju, dodajte naš paket Ultimate Suite v zbirko orodij Excel.
V tem poglavju si bomo podrobneje ogledali Odstranjevanje po položaju funkcija, ki se nahaja v Podatkovni zapisi o napravah Ablebits zavihek> Besedilo skupina> Odstranite .
V nadaljevanju bomo opisali dva najpogostejša scenarija.
Odstranjevanje vsega pred ali za določenim besedilom
Predpostavimo, da vsi vaši izvorni nizi vsebujejo neko skupno besedo ali besedilo in želite izbrisati vse pred ali za tem besedilom. Če želite to narediti, izberite svoje izvorne podatke, zaženite ukaz Odstranjevanje po položaju in ga konfigurirajte, kot je prikazano spodaj:
- Izberite Vsi znaki pred besedilom ali Vsi znaki za besedilom in vnesite besedilo ključa (ali znak) v polje poleg njega.
- Glede na to, ali naj se velike in male črke obravnavajo kot različni ali enaki znaki, potrdite ali odkljukajte polje Občutljivost na velike in male črke škatla.
- Hit Odstranite .
V tem primeru odstranimo vse znake pred besedo "error" v celicah A2:A8:
In dobili natanko takšen rezultat, kot ga iščemo:
Odstranjevanje besedila med dvema znakoma
Če so nepomembne informacije med dvema določenima znakoma, jih lahko hitro izbrišete:
- Izberite Odstranite vse podrejene nize in v spodnja polja vnesite dva znaka.
- Če je treba odstraniti tudi znake "med", preverite Vključno z razmejitvami polje.
- Kliknite . Odstranite .
Kot primer izbrišemo vse med dvema znakoma tilde (~) in dobimo popolnoma očiščene nize:
Če želite preizkusiti druge uporabne funkcije tega večnamenskega orodja, vam priporočam, da prenesete preizkusno različico na koncu tega prispevka. Hvala za branje in upam, da se naslednji teden vidimo na našem blogu!
Razpoložljivi prenosi
Odstranjevanje prvih ali zadnjih znakov - primeri (.xlsm datoteka)
Ultimate Suite - preizkusna različica (.exe datoteka)