Sadržaj
U posljednjih nekoliko članaka, pogledali smo različite načine za uklanjanje znakova iz nizova u Excelu. Danas ćemo istražiti još jedan slučaj upotrebe - kako izbrisati sve prije ili iza određenog znaka.
Izbrišite tekst prije, iza ili između 2 znaka pomoću Find & Zamijeni
Za manipulaciju podacima u više ćelija, Pronađi i zamijeni je pravi alat. Da biste uklonili dio niza koji prethodi ili slijedi određeni znak, učinite sljedeće:
- Odaberite sve ćelije u kojima želite izbrisati tekst.
- Pritisnite Ctrl + H za otvaranje dijaloškog okvira Pronađi i zamijeni .
- U okviru Pronađi što unesite jednu od sljedećih kombinacija:
- Za uklanjanje teksta ispred određenog znaka , upišite znak ispred kojeg stoji zvjezdica (*char).
- Za uklanjanje teksta nakon određenog znaka , upišite znak iza kojeg slijedi zvjezdica (char *).
- Za brisanje podniza između dva znaka , upišite zvjezdicu okruženu s 2 znaka (char*char).
- Ostavite Zamijeni sa polje je prazno.
- Kliknite Zamijeni sve .
Na primjer, za uklanjanje sve iza zareza uključujući sam zarez, stavite zarez i znak zvjezdice (,*) u okvir Pronađi što i dobit ćete sljedeći rezultat:
Za brisanje podniza ispred zareza upišite zvjezdicu, zarez,sve nakon 1. zareza u A2, formula u B2 je:
=RemoveText(A3, ", ", 1, TRUE)
Za brisanje svega prije 1. zareza u A2, formula u C2 je:
=RemoveText(A3, ", ", 1, FALSE)
Budući da naša prilagođena funkcija prihvaća niz za razdjelnik , stavili smo zarez i razmak (", ") u 2. argument kako bismo poštedjeli problema s naknadnim rezanjem vodećih razmaka.
Naša prilagođena funkcija radi prekrasno, zar ne? Ali ako mislite da je to sveobuhvatno rješenje, još niste vidjeli sljedeći primjer :)
Izbrišite sve prije, iza ili između znakova
Da biste dobili još više opcija za uklanjanje pojedinačnih znakova ili teksta iz više ćelija, prema podudaranju ili položaju, dodajte naš Ultimate Suite u svoj okvir s alatima programa Excel.
Ovdje ćemo pobliže pogledati značajku Ukloni prema poziciji koja se nalazi na Ablebits Data kartica > Tekst grupa > Ukloni .
U nastavku ćemo pokriti dva najčešći scenariji.
Uklonite sve prije ili iza određenog teksta
Pretpostavimo da svi vaši izvorni nizovi sadrže neku uobičajenu riječ ili tekst i želite izbrisati sve prije ili iza tog teksta. Da biste to učinili, odaberite svoje izvorne podatke, pokrenite alat Ukloni po poziciji i konfigurirajte ga kao što je prikazano u nastavku:
- Odaberite Svi znakovi prije teksta ili Svi znakovi nakon teksta opciju i upišite ključni tekst (ili znak) u sljedeći okvirna njega.
- Ovisno o tome trebaju li se velika i mala slova tretirati kao različiti ili isti znakovi, označite ili poništite okvir Osjetljivo na velika i mala slova .
- Pogodi Ukloni .
U ovom primjeru uklanjamo sve znakove koji prethode riječi "greška" u ćelijama A2:A8:
I dobiti točno onaj rezultat koji tražimo:
Uklonite tekst između dva znaka
U situaciji kada su nevažne informacije između 2 određena znaka, evo kako možete ga brzo izbrisati:
- Odaberite Ukloni sve podnizove i upišite dva znaka u donje okvire.
- Ako treba ukloniti i znakove "između" , potvrdite okvir Uključujući razdjelnike .
- Kliknite Ukloni .
Kao na primjer, brišemo sve između dva znaka tilde (~) i kao rezultat dobivamo savršeno očišćene nizove:
Da isprobate druge korisne značajke uključene u ovaj višenamjenski alata, potičem vas da preuzmete e verzija vrednovanja na kraju ovog posta. Hvala vam na čitanju i nadamo se da se vidimo na našem blogu sljedeći tjedan!
Dostupna preuzimanja
Uklonite prve ili zadnje znakove - primjeri (.xlsm datoteka)
Ultimate Suite - probna verzija (.exe datoteka)
i razmak (*, ) u okviru Pronađi što.Imajte na umu da ne mijenjamo samo zarez, već zarez i razmak kako bismo spriječili vođenje razmaka u rezultatima. Ako su vaši podaci odvojeni zarezima bez razmaka, upotrijebite zvjezdicu nakon koje slijedi zarez (*,).
Za brisanje teksta između dva zareza , koristite zvjezdicu okruženu zarezima (,*,).
Savjet. Ako biste radije imali imena i telefonske brojeve odvojene zarezom, upišite zarez (,) u polje Zamijeni s .
Uklonite dio teksta pomoću Flash Filla
U modernim verzijama Excela (2013. i novije), postoji još jedan jednostavan način za brisanje teksta koji prethodi ili slijedi određeni znak - značajka Flash Fill. Evo kako to funkcionira:
- U ćeliju pored prve ćelije s vašim podacima upišite očekivani rezultat i pritisnite Enter .
- Počnite upisivati odgovarajuću vrijednost u sljedeću ćeliju. Nakon što Excel osjeti uzorak u vrijednostima koje unosite, prikazat će pregled za preostale ćelije prema istom uzorku.
- Pritisnite tipku Enter da biste prihvatili prijedlog.
Gotovo!
Uklonite tekst pomoću formula
U Microsoft Excelu mnoge manipulacije podacima koje se izvode korištenjem ugrađenih značajki također se mogu izvršiti pomoću formule. Za razliku od prethodnih metoda, formule ne mijenjaju izvorne podatke i daju vam više kontrolerezultate.
Kako ukloniti sve nakon određenog znaka
Za brisanje teksta nakon određenog znaka, generička formula je:
LEFT( cell , SEARCH (" char ", cell ) -1)Ovdje koristimo funkciju SEARCH da dobijemo položaj znaka i proslijedimo ga funkciji LIJEVO, tako da izdvaja odgovarajući broj znakova od početka niza. Jedan se znak oduzima od broja koji vraća SEARCH kako bi se graničnik isključio iz rezultata.
Na primjer, da biste uklonili dio niza nakon zareza, unesite donju formulu u B2 i povucite je prema dolje kroz B7 :
=LEFT(A2, SEARCH(",", A2) -1)
Kako ukloniti sve prije određenog znaka
Da biste izbrisali dio tekstualnog niza prije određenog znaka, generička formula je:
RIGHT( cell , LEN( cell ) - SEARCH(" char ", cell ))Ovdje ponovno izračunavamo položaj ciljnog znaka uz pomoć SEARCH-a, oduzimamo ga od ukupne duljine niza koju vraća LEN i prosljeđujemo razliku funkciji RIGHT, tako da ona povlači toliko znakova s kraja niz.
Na primjer, za uklanjanje teksta ispred zareza, formula je:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
U našem slučaju, iza zareza slijedi razmak. Kako bismo izbjegli vodeće razmake u rezultatima, umotavamo temeljnu formulu u funkciju TRIM:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))
Napomene:
- Obojegornjih primjera pretpostavljaju da postoji samo jedna instanca graničnika u izvornom nizu. Ako postoji više pojavljivanja, tekst će biti uklonjen prije/poslije prve instance .
- Funkcija SEARCH ne razlikuje velika i mala slova , što znači da ne pravi razliku između mala i velika slova. Ako je vaš specifičan znak slovo i želite razlikovati velika i mala slova, upotrijebite funkciju osjetljivo na velika i mala slova FIND umjesto SEARCH.
Kako izbrisati tekst nakon N-tog pojavljivanja znaka
U situaciji kada izvorni niz sadrži više instanci graničnika, možda ćete morati ukloniti tekst nakon određene instance. Za to koristite sljedeću formulu:
LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "#" , n )) -1)Gdje je n pojavljivanje znaka nakon kojeg se uklanja tekst.
Unutarnja logika ove formule zahtijeva upotrebu nekog znaka koji nije prisutan nigdje u izvornim podacima, simbol hash (#) u našem slučaju. Ako se ovaj znak pojavljuje u vašem skupu podataka, upotrijebite nešto drugo umjesto "#".
Na primjer, za uklanjanje svega iza drugog zareza u A2 (i samog zareza), formula je:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Kako ova formula radi:
Ključni dio formule je funkcija FIND koja izračunava položaj n-toggraničnik (u našem slučaju zarez). Evo kako:
Drugi zarez u A2 zamjenjujemo simbolom hash (ili bilo kojim drugim znakom koji ne postoji u vašim podacima) uz pomoć SUBSTITUTE:
SUBSTITUTE(A2, ",", "#", 2)
Rezultirajući niz ide do 2. argumenta FIND-a, tako da pronalazi položaj "#" u tom nizu:
FIND("#", "Emma, Design# (102) 123-4568")
FIND nam govori da je "#" 13. znak u nizu. Da biste saznali broj znakova koji mu prethode, samo oduzmite 1 i dobit ćete 12 kao rezultat:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Ovaj broj ide izravno u argument num_chars od LIJEVO tražeći da izvuče prvih 12 znakova iz A2:
=LEFT(A2, 12)
To je to!
Kako izbrisati tekst prije N-tog pojavljivanja znaka
Generička formula za uklanjanje podniza prije određenog znaka je:
RIGHT(SUBSTITUTE( cell , " char ", "#", n ), LEN( cell ) - FIND("#", SUBSTITUTE( cell , " char ", "#", n )) -1)Na primjer, za uklanjanje teksta prije 2. zareza u A2, formula je:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Da bismo uklonili vodeći razmak, ponovno koristimo TRIM funkcionira kao omotač:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Kako ova formula funkcionira:
Ukratko, otkrivamo koliko je znakova iza n-tog graničnika i izvucite podniz odgovarajuće duljine s desne strane. Ispod je rastavljanje formule:
Prvo, drugi zarez u A2 zamijenimo hashomsimbol:
SUBSTITUTE(A2, ",", "#", 2)
Rezultirajući niz ide u argument tekst DESNO:
RIGHT("Emma, Design# (102) 123-4568", …
Dalje, moramo definirati koliko znakova treba izdvojiti s kraja niza. Za ovo pronalazimo položaj hash simbola u gornjem nizu (koji je 13):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
I oduzimamo ga od ukupne duljine niza (koja je jednaka 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Razlika (15) ide u drugi argument od RIGHT dajući mu instrukciju da povuče zadnjih 15 znakova iz niza u prvom argumentu:
RIGHT("Emma, Design# (102) 123-4568", 15)
Izlaz je podniz " (102) 123-4568", koji je vrlo blizu željenog ishoda, osim razmaka na početku. Dakle, koristimo funkciju TRIM da ga se riješimo.
Kako ukloniti tekst nakon zadnjeg pojavljivanja znaka
U slučaju da su vaše vrijednosti odvojene promjenjivim brojem graničnika, možda će htjeti ukloniti sve nakon zadnje instance tog graničnika. To se može učiniti pomoću sljedeće formule:
LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "# ", LEN( cell ) - LEN(SUBSTITUTE( cell , " char ", "")))) -1)Pretpostavimo stupac A sadrži različite informacije o zaposlenicima, ali vrijednost iza zadnjeg zareza uvijek je telefonski broj. Vaš cilj je ukloniti telefonske brojeve i zadržati sve ostale detalje.
Da biste postigli cilj, možete ukloniti tekst nakon zadnjeg zareza u A2 s ovimformula:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Kopirajte formulu niz stupac, i dobit ćete ovaj rezultat:
Kako ovo formula radi:
Suština formule je da odredimo položaj posljednjeg graničnika (zareza) u nizu i povučemo podniz slijeva prema graničniku. Dohvaćanje položaja graničnika najzahtjevniji je dio, a evo kako to rješavamo:
Prvo saznajemo koliko zareza ima u izvornom nizu. U tu svrhu svaki zarez zamjenjujemo ničim ("") i poslužujemo rezultirajući niz funkciji LEN:
LEN(SUBSTITUTE(A2, ",",""))
Za A2, rezultat je 35, što je broj znakova u formatu A2 bez zareza.
Oduzmite gornji broj od ukupne dužine niza (38 znakova):
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
… i dobit ćete 3, što je ukupan broj zareza u A2 (i također redni broj zadnjeg zareza).
Dalje, koristite već poznatu kombinaciju funkcija FIND i SUBSTITUTE da biste dobili poziciju zadnjeg zareza u nizu. Broj instance (3. zarez u našem slučaju) dobiva se gore spomenutom formulom LEN SUBSTITUTE:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Čini se da je 3. zarez 23. znak u A2, što znači da trebamo za izdvajanje 22 znaka koji mu prethode. Dakle, stavili smo gornju formulu minus 1 u num_chars argument LIJEVO:
LEFT(A2, 23-1)
Kako ukloniti tekst prije posljednjeg pojavljivanja znaka
Za brisanjesve prije zadnje instance određenog znaka, generička formula je:
RIGHT( cell , LEN( cell ) - FIND("#", SUBSTITUTE( ćelija , " char ", "#", LEN( cell ) - LEN(SUBSTITUTE( char , " char ", "")))))U našoj oglednoj tablici, kako bismo iskorijenili tekst prije posljednjeg zareza, formula ima ovaj oblik:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Kao završni detalj, mi ugniježdite ga u funkciju TRIM da biste uklonili vodeće razmake:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Kako ova formula funkcionira:
Ukratko, dobivamo položaj posljednjeg zareza kao što je objašnjeno u prethodnom primjeru i oduzimamo ga od ukupne duljine niza:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
Kao rezultat, dobivamo broj znakova nakon zadnjeg zareza i proslijedite ga funkciji RIGHT, tako da donosi toliko znakova s kraja niza.
Prilagođena funkcija za uklanjanje teksta s obje strane znaka
Kao kao što ste vidjeli u gornjim primjerima, možete razriješiti gotovo sve slučajeve upotrebe korištenjem izvornog f namaza u različitim kombinacijama. Problem je u tome što morate zapamtiti pregršt lukavih formula. Hmm, što ako napišemo vlastitu funkciju koja pokriva sve scenarije? Zvuči kao dobra ideja. Dakle, dodajte sljedeći VBA kod u svoju radnu knjigu (detaljni koraci za umetanje VBA u Excel su ovdje):
Function 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) For i = 1 Do pojavljivanja delimiter_num = InStr(start_num, str, delimiter, vbTextCompare) Ako je 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 FunctionNaša funkcija se zove RemoveText i ima sljedeću sintaksu:
RemoveText(niz, razdjelnik, pojavljivanje, is_after)Gdje:
Niz - je izvorni tekstualni niz. Može se predstaviti referencom na ćeliju.
Razdjelnik - znak prije/poslije kojeg treba ukloniti tekst.
Pojava - instanca graničnik.
Is_after - Booleova vrijednost koja označava s koje strane graničnika ukloniti tekst. Može biti jedan znak ili niz znakova.
- TRUE - izbrišite sve nakon razdjelnika (uključujući i sam razdjelnik).
- FALSE - izbrišite sve prije razdjelnika (uključujući sam graničnik).
Nakon što se kod funkcije umetne u vašu radnu knjigu, možete ukloniti podnizove iz ćelija pomoću kompaktnih i elegantnih formula.
Na primjer, za brisanje