Uklonite tekst prije, poslije ili između dva znaka u Excelu

  • Podijeli Ovo
Michael Brown

U posljednjih nekoliko članaka, pogledali smo različite načine uklanjanja znakova iz stringova u Excelu. Danas ćemo istražiti još jedan slučaj upotrebe - kako izbrisati sve prije ili poslije određenog znaka.

    Izbrišite tekst prije, poslije ili između 2 znaka pomoću Find & Zamijeni

    Za manipulacije podacima u više ćelija, Find and Replace je pravi alat. Da biste uklonili dio niza koji prethodi ili slijedi određenom znaku, ovo su koraci koje treba izvršiti:

    1. Odaberite sve ćelije u kojima želite da izbrišete tekst.
    2. Pritisnite Ctrl + H da otvorite dijalog Pronađi i zamijeni .
    3. U okviru Pronađi šta unesite jednu od sljedećih kombinacija:
      • Da biste eliminirali tekst ispred datog znaka , otkucajte znak kojem prethodi zvezdica (*char).
      • Da biste uklonili tekst posle određenog znaka , otkucajte znak nakon kojeg slijedi zvjezdica (char *).
      • Da izbrišete podniz između dva znaka , upišite zvjezdicu okruženu sa 2 znaka (char*char).
    4. Ostavite Zamijeni sa polje prazno.
    5. Kliknite na Zamijeni sve .

    Na primjer, da uklonite sve iza zareza uključujući i sam zarez, stavite zarez i znak zvjezdice (,*) u okvir Pronađi šta i dobićete sljedeći rezultat:

    Da obrišete podniz ispred zareza , upišite zvjezdicu, zarez,sve iza 1. zareza u A2, formula u B2 je:

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

    Da biste izbrisali sve prije 1. zareza u A2, formula u C2 je:

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

    Budući da naša prilagođena funkcija prihvata string za graničnik , stavljamo zarez i razmak (", ") u 2. argument da bismo poštedjeli truda nakon rezanja 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, poslije ili između znakova

    Da biste dobili još više opcija za uklanjanje pojedinačnih znakova ili tekst iz više ćelija, prema podudaranju ili poziciji, dodajte naš Ultimate Suite u vaš Excel alatni okvir.

    Ovdje ćemo pobliže pogledati funkciju Ukloni po poziciji koja se nalazi na Ablebits Data kartica > Tekst grupa > Ukloni .

    U nastavku ćemo pokriti dva najčešći scenariji.

    Uklonite sve prije ili poslije određenog teksta

    Pretpostavimo da svi vaši izvorni nizovi sadrže neku uobičajenu riječ ili tekst i želite da izbrišete sve prije ili poslije tog teksta. Da biste to učinili, odaberite svoje izvorne podatke, pokrenite alat Ukloni po poziciji i konfigurirajte ga kao što je prikazano ispod:

    1. Odaberite Svi znakovi prije teksta ili Svi znakovi iza teksta opcije i ukucajte ključni tekst (ili znak) u sljedeće poljena njega.
    2. U zavisnosti od toga da li velika i mala slova treba tretirati kao različite ili iste znakove, označite ili poništite okvir Mala i mala slova .
    3. Pritisnite Ukloni .

    U ovom primjeru uklanjamo sve znakove koji prethode riječi "greška" u ćelijama A2:A8:

    I dobiti upravo rezultat koji tražimo:

    Uklonite tekst između dva znaka

    U situaciji kada se nebitna informacija nalazi između 2 specifična znaka, evo kako možete ga brzo izbrisati:

    1. Odaberite Ukloni sve podnizove i upišite dva znaka u donje okvire.
    2. Ako treba ukloniti i znakove "između" , označite kućicu Uključujući razgraničenja .
    3. Kliknite na Ukloni .

    Kao na primjer, izbrišemo sve između dva znaka tilde (~) i dobijemo savršeno očišćene nizove kao rezultat:

    Da isprobate druge korisne značajke uključene u ovaj multifunkcionalni alat, preporučujem vam da preuzmete e verzija procjene vrijednosti na kraju ovog posta. Hvala vam što čitate i nadamo se da se vidimo na našem blogu sljedeće sedmice!

    Dostupna preuzimanja

    Ukloni prve ili posljednje znakove - primjere (.xlsm fajl)

    Ultimate Suite - probna verzija (.exe fajl)

    i razmak (*, ) u polju Pronađi što.

    Molimo da primijetimo da ne zamjenjujemo samo zarez, već i zarez i razmak kako bismo spriječili vođenje praznine u rezultatima. Ako su vaši podaci odvojeni zarezima bez razmaka, upotrijebite zvjezdicu iza koje slijedi zarez (*,).

    Da izbrišete tekst 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 sa .

    Uklonite dio teksta pomoću Flash Fill

    U modernim verzijama Excela (2013 i novije), postoji još jedan lak način da se iskorijeni tekst koji prethodi ili slijedi određenom karakteru - funkcija Flash Fill. Evo kako to funkcionira:

    1. U ćeliju pored prve ćelije s vašim podacima upišite očekivani rezultat i pritisnite Enter .
    2. Počnite upisivati ​​odgovarajuću vrijednost u sljedeću ćeliju. Kada Excel osjeti uzorak u vrijednostima koje unosite, prikazat će pregled preostalih ćelija koje slijede isti obrazac.
    3. Pritisnite tipku Enter da prihvatite prijedlog.

    Gotovo!

    Uklonite tekst pomoću formula

    U Microsoft Excel-u mnoge manipulacije podacima koje se izvode korištenjem ugrađenih funkcija također se mogu postići formulom. Za razliku od prethodnih metoda, formule ne unose nikakve promjene u originalne podatke i daju vam veću kontrolu nad njimarezultate.

    Kako ukloniti sve nakon određenog znaka

    Da biste izbrisali tekst nakon određenog znaka, generička formula je:

    LEFT( cell , SEARCH (" char ", cell ) -1)

    Ovdje koristimo funkciju SEARCH da dobijemo poziciju znaka i proslijeđujemo ga funkciji LIJEVO, tako da izvlači odgovarajući broj znakova od početka niza. Jedan znak se oduzima od broja koji vraća SEARCH da bi se isključio graničnik iz rezultata.

    Na primjer, da biste uklonili dio niza nakon zareza, unesite formulu ispod 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:

    DESNO( ćelija , LEN( ćelija ) - SEARCH(" char ", ćelija ))

    Ovdje opet izračunavamo poziciju ciljnog karaktera uz pomoć SEARCH, oduzimamo je od ukupne dužine niza koju vraća LEN i prosljeđujemo razliku funkciji DESNO, tako da ona povlači toliko znakova s ​​kraja string.

    Na primjer, da biste uklonili tekst prije zareza, formula je:

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

    U našem slučaju, nakon zareza slijedi razmak. Da bismo izbjegli vodeće razmake u rezultatima, umotavamo osnovnu formulu u funkciju TRIM:

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

    Napomene:

    • Obojeod gornjih primjera pretpostavlja se da postoji samo jedna instanca graničnika u originalnom nizu. Ako postoji više pojavljivanja, tekst će biti uklonjen prije/poslije prve instance .
    • Funkcija SEARCH nije osjetljiva na velika i mala slova , što znači da nema razlike između mala i velika slova. Ako je vaš specifični znak slovo i želite razlikovati velika i mala slova, tada koristite funkciju različit na velika i mala slova FIND funkciju 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 imati potrebu da uklonite tekst nakon određene instance. Za ovo koristite sljedeću formulu:

    LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "#" , n )) -1)

    Gdje je n pojavljivanje znaka nakon kojeg treba ukloniti tekst.

    Unutarnja logika ove formule zahtijeva korištenje nekog znaka koji nije prisutan nigdje u izvornim podacima, heš simbol (#) u našem slučaju. Ako se ovaj znak pojavljuje u vašem skupu podataka, upotrijebite nešto drugo umjesto "#".

    Na primjer, da biste uklonili sve nakon 2. zareza u A2 (i samog zareza), formula je:

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

    Kako ova formula funkcionira:

    Ključni dio formule je funkcija FIND koja izračunava pozicija n-toggraničnik (zarez u našem slučaju). Evo kako:

    Drugi zarez u A2 zamjenjujemo heš simbolom (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, tako da pronalazi poziciju "#" u tom nizu:

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

    FIND nam govori da je "#" 13. znak u nizu. Da biste saznali broj znakova koji prethode njemu, samo oduzmite 1 i dobit ćete 12 kao rezultat:

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

    Ovaj broj ide direktno u argument num_chars od LIJEVO tražeći da povuč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, da bismo uklonili tekst prije 2. zareza u A2, formula je:

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

    Da bismo eliminirali vodeći razmak, ponovo koristimo TRIM funkcionira kao omotač:

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

    Kako ova formula funkcionira:

    U sažetku, saznajemo koliko je znakova iza n-tog graničnika i izdvojiti podniz odgovarajuće dužine s desne strane. Ispod je raščlamba formule:

    Prvo, zamjenjujemo 2. zarez u A2 s hashomsimbol:

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

    Rezultirajući niz ide u text argument DESNO:

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

    Dalje, moramo definirati koliko znakova treba izdvojiti s kraja niza. Za ovo, nalazimo poziciju heš simbola u gornjem nizu (koji je 13):

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

    I oduzmimo ga od ukupne dužine niza (koja je jednaka 28):

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

    Razlika (15) ide do drugog argumenta DESNO dajući mu upute 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 željenom ishodu, osim vodećeg razmaka. Dakle, koristimo funkciju TRIM da bismo je se riješili.

    Kako ukloniti tekst nakon posljednjeg pojavljivanja znaka

    U slučaju da su vaše vrijednosti odvojene promjenjivim brojem graničnika, možda želite ukloniti sve nakon posljednje instance tog graničnika. Ovo se može uraditi sa sljedećom formulom:

    LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "# ", LEN( cell ) - LEN(SUBSTITUTE( cell , " char ", "")))) -1)

    Pretpostavimo stupac A sadrži razne informacije o zaposlenima, ali vrijednost iza zadnjeg zareza je uvijek broj telefona. Vaš cilj je ukloniti brojeve telefona i zadržati sve ostale detalje.

    Da biste postigli cilj, možete ukloniti tekst iza zadnjeg zareza u A2 sa ovimformula:

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

    Kopirajte formulu niz kolonu i dobit ćete ovaj rezultat:

    Kako ovo formula radi:

    Suština formule je da odredimo poziciju posljednjeg graničnika (zareza) u nizu i povučemo podniz slijeva nagore do graničnika. Dobijanje položaja graničnika je najzahtjevniji dio, a evo kako to rješavamo:

    Prvo, saznajemo koliko zareza ima u originalnom nizu. Za ovo, svaki zarez zamjenjujemo ničim ("") i serviramo rezultirajući niz funkciji LEN:

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

    Za A2, rezultat je 35, što je broj znakova u 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đe redni broj zadnjeg zareza).

    Dalje, koristite već poznatu kombinaciju funkcija FIND i SUBSTITUTE da biste dobili poziciju posljednjeg zareza u nizu. Broj instance (u našem slučaju 3. zarez) je dostavljen gore spomenutom formulom LEN SUBSTITUTE:

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

    Izgleda da je 3. zarez 23. znak u A2, što znači da nam je potrebno da izdvojite 22 znaka koji prethode njemu. Dakle, stavili smo gornju formulu minus 1 u argument num_chars LIJEVO:

    LEFT(A2, 23-1)

    Kako ukloniti tekst prije posljednjeg pojavljivanja znaka

    Za brisanjesve prije posljednje instance određenog znaka, generička formula je:

    DESNO( ćelija , LEN( ćelija ) - FIND("#", SUBSTITUTE( cell , " char ", "#", LEN( cell ) - LEN(SUBSTITUTE( cell , " char ) ", "")))))))

    U našoj tablici uzorka, za brisanje teksta prije posljednjeg zareza, formula ima ovaj oblik:

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

    Kao završni dodir, mi ugnijezdite ga u funkciju TRIM kako biste eliminirali vodeće razmake:

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

    Kako ova formula funkcionira:

    Ukratko, dobijamo poziciju posljednjeg zareza kako je objašnjeno u prethodnom primjeru i oduzimamo je od ukupne dužine niza:

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

    Kao rezultat, dobijamo broj znakove iza zadnjeg zareza i proslijediti ga funkciji RIGHT, tako da donosi toliko znakova s ​​kraja niza.

    Prilagođena funkcija za uklanjanje teksta s obje strane znaka

    Kao koje ste vidjeli u gornjim primjerima, možete riješiti gotovo svaki slučaj upotrebe korištenjem Excelovog izvornog f mazanje u različitim kombinacijama. Problem je u tome što morate zapamtiti nekoliko 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):

    Funkcija RemoveText(str As String, graničnik Kao String, pojavljivanje Kao cijeli broj, is_after AsBoolean ) Dim delimiter_num, start_num, delimiter_len Kao cijeli broj Dim str_result Kao niz delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) Za i = 1 Do pojavljivanja delimiter_num = InStr(start_numCom, v str,T) delimiter. < delimiter_num Zatim start_num = delimiter_num + delimiter_len End If Next i Ako je 0 < delimiter_num Tada Ako je istina = is_after Tada str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) End If End Ako RemoveText = str_result Krajnja funkcija

    Naša funkcija je nazvana RemoveText i ima sljedeću sintaksu:

    RemoveText(string, delimiter, occurrence, is_after)

    Gdje:

    String - je originalni tekstualni niz. Može se predstaviti referencom ćelije.

    Razgranič - znak prije/poslije kojeg treba ukloniti tekst.

    Pojava - instanca delimiter.

    Is_after - Booleova vrijednost koja pokazuje na kojoj strani graničnika treba ukloniti tekst. Može biti jedan znak ili niz znakova.

    • TRUE - izbrišite sve iza graničnika (uključujući i sam graničnik).
    • FALSE - izbrišite sve prije graničnika (uključujući sam graničnik).

    Kada je kod funkcije umetnut u vašu radnu knjigu, možete ukloniti podnizove iz ćelija koristeći kompaktne i elegantne formule.

    Na primjer, za brisanje

    Michael Brown je posvećen tehnološki entuzijasta sa strašću za pojednostavljenje složenih procesa pomoću softverskih alata. Sa više od decenije iskustva u tehnološkoj industriji, usavršio je svoje vještine u Microsoft Excelu i Outlooku, kao i Google Sheets i Docs. Michaelov blog je posvećen dijeljenju svog znanja i stručnosti s drugima, pružajući jednostavne savjete i tutorijale za poboljšanje produktivnosti i efikasnosti. Bilo da ste iskusni profesionalac ili početnik, Michaelov blog nudi vrijedne uvide i praktične savjete za izvlačenje maksimuma iz ovih osnovnih softverskih alata.