Uklonite razmake i prazne retke u Excelu pomoću Regexa

  • Podijeli Ovo
Michael Brown

Želite riješiti razmake na najučinkovitiji način? Koristite regularne izraze za uklanjanje svih razmaka u ćeliji, zamjenu više razmaka s jednim znakom, smanjenje razmaka samo između brojeva i više.

Koje god ulazne podatke koristite, teško da ćete naići na skup podataka bez razmaka. U većini slučajeva razmak je dobar - koristite ga za vizualno odvajanje različitih informacija kako biste ih lakše uočili. U nekim situacijama, međutim, može postati zlo - dodatni razmaci mogu zabrljati vaše formule i učiniti vaše radne listove gotovo nemogućima za rukovanje.

    Zašto koristiti regularne izraze za skraćivanje razmaka u Excelu?

    Prije nego što zaronimo u detalje korištenja regularnih izraza za uklanjanje razmaka u Excel radnim listovima, želio bih se pozabaviti pitanjem koje mi prvo pada na pamet - zašto su nam potrebni regularni izrazi kada Excel već ima TRIM funkciju?

    Da bismo razumjeli razliku, pogledajmo što se smatra razmakom u svakom slučaju:

    • Ugrađena funkcija TRIM može ukloniti samo razmak koji ima vrijednost 32 u 7-bitnom ASCII sustavu.
    • Regularni izrazi mogu identificirati nekoliko različitih oblika razmaka kao što su razmak ( ), tabulator (\t), povratak na početak (\r) i novi linija (\n). Dodatno, postoji razmak (\s) koji odgovara svim ovim tipovima i izuzetno je koristan za čišćenje sirovog unosapodataka.

    Znajući točno što se događa iza kulisa, puno je lakše pronaći rješenje, zar ne?

    Kako omogućiti regularne izraze u Excelu

    Dobro je poznata činjenica da Excel izvan okvira ne podržava regularne izraze. Da biste ih omogućili, morate stvoriti prilagođenu VBA funkciju. Srećom, već imamo jedan, pod nazivom RegExpReplace . Čekaj, čemu "zamjena" kad govorimo o uklanjanju? U Excel jeziku, "ukloni" je samo još jedna riječ za "zamijeni praznim nizom" :)

    Da biste dodali funkciju u svoj Excel, jednostavno kopirajte njen kod s ove stranice, zalijepite ga u VBA uređivač , i spremite svoju datoteku kao radnu knjigu s omogućenom makronaredbom (.xlsm).

    Ovdje je sintaksa funkcije za vašu referencu:

    RegExpReplace(text, pattern, replacement, [instance_num] , [match_case])

    Prva tri argumenta su obavezna, posljednja dva su izborna.

    Gdje:

    • Tekst - originalni niz za traži u.
    • Uzorak - regularni izraz za traženje.
    • Zamjena - tekst kojim se treba zamijeniti. Da biste uklonili bjeline , ovaj biste argument postavili na bilo koje:
      • prazan niz ("") da biste skratili apsolutno sve razmake
      • razmak znak (" ") za zamjenu više razmaka s jednim razmakom
    • Instance_num (neobavezno) - broj instance. U većini slučajeva izostavit ćete ga kako biste zamijenili sve instance(zadano).
    • Match_case (izborno) - Booleova vrijednost koja pokazuje treba li odgovarati (TRUE) ili zanemariti (FALSE) velika i mala slova teksta. Za razmake, to je irelevantno i stoga je izostavljeno.

    Za više informacija pogledajte funkciju RegExpReplace.

    Kako ukloniti razmake s regularnim izrazom - primjeri

    S Funkcija RegExpReplace dodana je u vašu radnu knjigu, pozabavimo se različitim scenarijima jedan po jedan.

    Uklonite sve razmake pomoću regularnog izraza

    Da biste uklonili sve razmake u nizu, jednostavno tražite bilo koji znak razmaka, uključujući razmak, tabulator, znak za početak i pomak za novi redak i zamijenite ih praznim nizom ("").

    Uzorak : \s+

    Zamjena : ""

    Pod pretpostavkom da je izvorni niz u A5, formula u B5 je:

    =RegExpReplace(A5, "\s+", "")

    Da biste lakše upravljali svojim uzorcima , možete unijeti regularni izraz u unaprijed definiranu ćeliju i unijeti ga u formulu pomoću apsolutne reference kao što je $A$2, tako da će adresa ćelije ostati nepromijenjena prilikom kopiranja formule niz stupac.

    =RegExpReplace(A5, $A$2, "")

    Uklonite više od jednog razmaka

    Za uklanjanje dodatnog razmaka (tj. više od n jedan uzastopni razmak), upotrijebite isti regularni izraz \s+ ali zamijenite pronađena podudaranja s jednim razmakom.

    Uzorak : \s+

    Zamjena : " "

    =RegExpReplace(A5, "\s+", " ")

    Molimo obratite pozornost da ova formula zadržava jedan razmak ne samo izmeđuispod skupa podataka, pretpostavimo da želite skratiti sve razmake na početku/završetku i sve osim jednog razmaka između, zadržavajući više redaka netaknutima. Da biste ispunili zadatak, trebat će vam dvije različite funkcije RegExpReplace.

    Prva funkcija zamjenjuje više razmaka s jednim razmakom.

    =RegExpReplace(A5, " +", " ")

    Druga uklanja razmake od početka i kraja retka:

    =RegExpReplace(A5, "^ +| +$", "")

    Samo ugniježdite dvije funkcije jednu u drugu:

    =RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")

    I dobit ćete savršen rezultat:

    Regex za zamjenu više razmaka jednim znakom

    U slučaju da želite ukloniti sve razmake iz niza i zamijeniti svaku grupu uzastopnih razmaka s određenim znakom, ovo je ono što trebate učiniti:

    Prvo, upotrijebite ovaj regularni izraz za rezanje početnih i završnih bjelina:

    =RegExpReplace(A8, "^[\s]+|[\s]+$", "")

    Zatim poslužite gornju funkciju na argument text druge RegExpReplace koja zamjenjuje jedan ili više uzastopnih razmaka sa znakom koji navedete, npr. crtica:

    Uzorak : \s+

    Zamjena : -

    Pod pretpostavkom da je izvorni niz u A8, formula ima ovaj oblik:

    =RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")

    Ili možete unijeti uzorke i zamjene u zasebne ćelije kao što je prikazano na snimci zaslona:

    Regex za uklanjanje praznih redaka

    Ovo je pitanje koje često postavljaju korisnici koji imaju više redaka u jednoj ćeliji: "U mojim ćelijama ima puno praznih redaka. Postoji li način dariješiti ih se osim prolaska kroz svaku ćeliju i ručnog brisanja svakog retka?" Odgovor: To je jednostavno!

    Za spajanje praznih redaka koji nemaju niti jedan znak od početka ^ trenutnog retka do sljedeći redak \n, regularni izraz je:

    Uzorak : ^\n

    Ako vaši vizualno prazni reci sadrže razmake ili kartice, koristite ovaj regularni izraz:

    Uzorak : ^[\t ]*\n

    Samo zamijenite regularni izraz praznim nizom koristeći ovu formulu i svi prazni redovi će nestati odjednom!

    =RegExpReplace(A5, $A$2, "")

    Uklanjanje razmaka s RegEx alatima

    Gornji primjeri demonstrirali su samo mali dio prekrasnih mogućnosti koje pružaju regularni izrazi. Nažalost, ne svi značajke klasičnih regularnih izraza dostupne su u VBA.

    Srećom, alati RegEx koji su uključeni u naš Ultimate Suite slobodni su od ovih ograničenja budući da ih obrađuje Microsoftov .NET RegEx mehanizam. To vam omogućuje da konstruirate sofisticiranije obrasce koji ne podržava VBA RegExp. Belo w naći ćete primjer takvog redovnog izraza.

    Regex za uklanjanje razmaka između brojeva

    U alfanumeričkom nizu, pretpostavimo da želite ukloniti razmake samo između brojeva, tako da niz kao što je "A 1 2 B" postaje "A 12 B".

    Za podudaranje razmaka između bilo koje dvije znamenke, možete upotrijebiti sljedeće razgledavanje:

    Uzorak : (?<=\d)\s+(?=\d)

    Za stvaranje formule na temeljuna gornjim regularnim izrazima, evo dva jednostavna koraka za izvesti:

    1. Na kartici Ablebits Data , u grupi Tekst kliknite Regex Alati .

    2. Na oknu Alati za regularne izraze odaberite izvorne podatke, unesite svoj regularni izraz, odaberite Ukloni i pritisnite Ukloni .

      Da biste dobili rezultate kao formule, a ne vrijednosti, ne zaboravite staviti kvačicu u potvrdni okvir Umetni kao formulu .

    Uskoro ćete vidjeti funkciju AblebitsRegexRemove umetnutu u novi stupac s desne strane izvornih podataka.

    Alternativno, možete unijeti regularni izraz u neku ćeliju , recimo A5, i umetnite formulu izravno u ćeliju pomoću dijaloškog okvira Insert Function , gdje je AblebitsRegexRemove kategoriziran pod AblebitsUDFs .

    Kako je ova funkcija posebno dizajnirana za uklanjanje nizova, zahtijeva samo dva argumenta - ulazni niz i regularni izraz:

    =AblebitsRegexRemove(A5, $A$2)

    Tako se uklanjaju razmaci u Excel koji koristi regularne izraze. Zahvaljujem vam na čitanju i radujem se što ćemo vas vidjeti na našem blogu sljedeći tjedan!

    Dostupna preuzimanja

    Uklonite razmake s regularnim izrazom - primjeri (.xlsm datoteka)

    Ultimate Suite - probna verzija (.exe datoteka)

    riječi ali i na početku i na kraju niza, što nije dobro. Da biste se riješili razmaka na početku i na kraju, ugniježdite gornju formulu u drugu funkciju RegExpReplace koja uklanja razmake s početka i kraja:

    =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")

    Regex to uklonite razmak na početku i na kraju

    Za traženje razmaka na početku ili na kraju retka koristite početna ^ i krajnja sidra $.

    Uvodni razmak:

    Uzorak : ^[\s]+

    Završni razmak:

    Uzorak : [\s ]+$

    Razmak na početku i zadnji razmak:

    Uzorak : ^[\s]+

    Michael Brown predani je tehnološki entuzijast sa strašću za pojednostavljivanjem složenih procesa pomoću softverskih alata. S više od desetljeća iskustva u tehnološkoj industriji, usavršio je svoje vještine u Microsoft Excelu i Outlooku, kao i Google tablicama i dokumentima. Michaelov blog posvećen je dijeljenju znanja i stručnosti s drugima, pružajući savjete i upute koje je lako slijediti za poboljšanje produktivnosti i učinkovitosti. Bez obzira jeste li iskusni profesionalac ili početnik, Michaelov blog nudi vrijedne uvide i praktične savjete za izvlačenje maksimuma iz ovih osnovnih softverskih alata.