Uklonite razmake i prazne redove u Excelu koristeći Regex

  • Podijeli Ovo
Michael Brown

Želite da rukujete prazninama na najefikasniji način? Koristite regularne izraze da biste uklonili sve razmake u ćeliji, zamijenili više razmaka jednim znakom, smanjili samo razmake između brojeva i još mnogo toga.

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 dijelova informacija kako biste ih lakše percipirali. U nekim situacijama, međutim, to može postati zao - dodatni razmaci mogu pokvariti vaše formule i učiniti vaše radne listove gotovo neupravljivim.

    Zašto koristiti regularni izraz za smanjenje razmaka u Excelu?

    Prije nego što uronimo u srž upotrebe regularnih izraza za uklanjanje razmaka u Excel radnim listovima, želio bih se pozabaviti pitanjem koje nam prvo pada na pamet - zašto su nam potrebni regularni izrazi kada Excel već ima TRIM funkcija?

    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 sistemu.
    • Regularni izrazi mogu identificirati nekoliko različitih oblika razmaka, kao što su razmak ( ), tab (\t), povratak na nosač (\r) i novi linija (\n). Dodatno, postoji razmak (\s) koji odgovara svim ovim tipovima i koji je izuzetno koristan za čišćenje sirovog unosapodaci.

    Znajući tačno šta se dešava iza scene, mnogo je lakše pronaći rešenje, zar ne?

    Kako omogućiti regularne izraze u Excelu

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

    Da dodate funkciju u svoj Excel, samo kopirajte njen kod sa ove stranice, zalijepite je u VBA editor , i spremite svoju datoteku kao radnu knjigu s omogućenom makronaredbom (.xlsm).

    Ovo je sintaksa funkcije za vašu referencu:

    RegExpReplace(tekst, uzorak, zamjena, [broj_instance] , [match_case])

    Prva tri argumenta su obavezna, posljednja dva su opciona.

    Gdje:

    • Tekst - originalni niz za traži u.
    • Uzorak - regularni izraz za traženje.
    • Zamjena - tekst za zamjenu. Da uklonite razmake , ovaj argument biste postavili na:
      • prazan string ("") da biste skratili apsolutno sve razmake
      • razmak znak (" ") za zamjenu više razmaka s jednim znakom razmaka
    • Broj_instance (opciono) - broj instance. U većini slučajeva ćete ga izostaviti da biste zamijenili sve instance(podrazumevano).
    • Match_case (opciono) - Boolean vrednost koja pokazuje da li se podudara (TRUE) ili ignorisati (FALSE) velika i mala slova teksta. Za razmak je irelevantan i stoga je izostavljen.

    Za više informacija pogledajte funkciju RegExpReplace.

    Kako ukloniti razmak pomoću regularnog izraza - primjeri

    Sa RegExpReplace funkcija dodana u vašu radnu svesku, hajde da se pozabavimo različitim scenarijima jedan po jedan.

    Uklonite sve razmake koristeći regex

    Da biste uklonili sve razmake u nizu, jednostavno tražite bilo koji znak razmaka, uključujući razmak, tabulator, povratak na red i prijelaz na red i zamijenite ih praznim nizom ("").

    Uzorak : \s+

    Zamjena : ""

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

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

    Da bi se olakšalo upravljanje vašim obrascima , možete unijeti regex u unaprijed definiranu ćeliju i dostaviti ga formuli koristeći apsolutnu referencu kao što je $A$2, tako da će adresa ćelije ostati nepromijenjena kada kopirate formulu niz kolonu.

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

    Uklonite više od jednog razmaka

    Da biste uklonili dodatni razmak (tj. više od n jedan uzastopni razmak), koristite isti regex \s+ ali zamijenite pronađena podudaranja s jednim znakom za razmak.

    Uzorak : \s+

    Zamjena : " "

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

    Obratite pažnju da ova formula zadržava jedan razmak ne samo izmeđuispod skupa podataka, pretpostavimo da želite smanjiti sve početne/završne razmake i sve osim jednog između razmaka, zadržavajući više redova netaknutim. Da ispunite zadatak, trebat će vam dvije različite funkcije RegExpReplace.

    Prva funkcija zamjenjuje više razmaka jednim znakom za razmak.

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

    Druga uklanja razmake od početka i kraja reda:

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

    Samo ugnijezdite 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 sa određenim karakterom, ovo je ono što trebate učiniti:

    Prvo, koristite ovaj regex da skrate početne i zadnje razmake:

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

    Zatim poslužite gornju funkciju u argument text drugog RegExpReplace-a koji zamjenjuje jedan ili više uzastopnih razmaka sa karakterom koji navedete, npr. crtica:

    Obrazac : \s+

    Zamjena : -

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

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

    Ili možete unijeti obrasce i zamjene u zasebne ćelije kao što je prikazano na snimku ekrana:

    Regex za uklanjanje praznih redova

    Evo pitanja koje korisnici koji imaju više redaka u jednoj ćeliji često postavljaju: "U mojim ćelijama ima puno praznih redova. Postoji li neki način da dobijemosloboditi ih se osim prolaska kroz svaku ćeliju i ručnog brisanja svake linije?" Odgovor: To je lako!

    Upariti prazne redove koji nemaju nijedan znak od početka ^ tekućeg reda do sljedeći red \n, regularni izraz je:

    Obrazac : ^\n

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

    Uzorak : ^[\t ]*\n

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

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

    Uklanjanje razmaka pomoću RegEx alata

    Gore navedeni primjeri su pokazali samo mali dio prekrasnih mogućnosti koje pružaju regeksi. Nažalost, nisu svi karakteristike klasičnih regularnih izraza dostupne su u VBA.

    Srećom, RegEx alati uključeni u naš Ultimate Suite nemaju ovih ograničenja jer ih obrađuje Microsoftov .NET RegEx mehanizam. Ovo vam omogućava da konstruišete sofisticiranije obrasce koji nisu podržani od strane VBA RegExp. Belo w naći ćete primjer takvog regularnog izraza.

    Regex za uklanjanje razmaka između brojeva

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

    Da biste uparili razmak između bilo koje dvije cifre, možete koristiti sljedeće preglede:

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

    Za kreiranje formule zasnovanena gornjim regularnim izrazima, evo dva jednostavna koraka za izvođenje:

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

    2. U oknu Regex Tools odaberite izvorne podatke, unesite svoj regularni izraz, odaberite Ukloni opciju i pritisnite Ukloni .

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

    Za trenutak ćete vidjeti funkciju AblebitsRegexRemove umetnutu u novu kolonu desno od originalnih podataka.

    Alternativno, možete unijeti regex u neku ćeliju , recite A5 i umetnite formulu direktno 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 regex:

    =AblebitsRegexRemove(A5, $A$2)

    Tako se uklanjaju razmaci u Excel koristeći regularne izraze. Zahvaljujem vam na čitanju i radujem se što ću vas vidjeti na našem blogu sljedeće sedmice!

    Dostupna preuzimanja

    Uklonite razmak pomoću regularnog izraza - primjeri (.xlsm fajl)

    Ultimate Suite - probna verzija (.exe fajl)

    riječi, ali i na početku i na kraju niza, što nije dobro. Da biste se riješili vodećih i završnih razmaka, ugniježite gornju formulu u drugu funkciju RegExpReplace koja uklanja razmake od početka i kraja:

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

    Regex u uklonite vodeći i završni razmak

    Da biste tražili razmak na početku ili kraju reda, koristite sidra za početak ^ i kraj $.

    Vodeći razmak:

    Obrazac : ^[\s]+

    Završni razmak:

    Obrazac : [\s ]+$

    Vodeći i završni razmak:

    Obrazac : ^[\s]+

    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.