Odstranjevanje belih presledkov in praznih vrstic v Excelu z uporabo regexa

  • Deliti To
Michael Brown

Želite najučinkoviteje ravnati z belimi presledki? Z regularnimi izrazi odstranite vse presledke v celici, nadomestite več presledkov z enim znakom, obrežite presledke samo med številkami in še več.

Ne glede na to, katere vhodne podatke uporabljate, skorajda ne boste naleteli na podatkovni niz brez presledkov. V večini primerov je bel prostor dober - uporabljate ga za vizualno ločevanje različnih informacij, da jih lažje zaznate. V nekaterih primerih pa lahko postane slab - dodatni presledki lahko zamajejo vaše formule in delovne liste naredijo skoraj neobvladljive.

    Zakaj uporabiti regularni izraz za obrezovanje belih presledkov v Excelu?

    Preden se poglobimo v podrobnosti uporabe regularnih izrazov za odstranjevanje belih presledkov v delovnih listih programa Excel, bi rad odgovoril na vprašanje, ki mi pride na misel najprej - zakaj potrebujemo regexe, če ima Excel že funkcijo TRIM?

    Da bi razumeli razliko, si oglejmo, kaj se v vsakem primeru šteje za beli prostor:

    • Vgrajena funkcija TRIM lahko odstrani le znak presledka ki ima v 7-bitnem sistemu ASCII vrednost 32.
    • Regularni izrazi lahko prepoznajo nekaj različnih oblik belega prostora, kot so presledek ( ), tabulator (\t), povratek (\r) in nova vrstica (\n). znak belega presledka (\s), ki se ujema z vsemi temi vrstami in je zelo koristen pri čiščenju surovih vhodnih podatkov.

    Če natančno veste, kaj se dogaja v ozadju, je veliko lažje najti rešitev, kajne?

    Kako omogočiti regularne izraze v programu Excel

    Znano dejstvo je, da Excel ne podpira regularnih izrazov. Če jih želite omogočiti, morate ustvariti funkcijo VBA po meri. Na srečo eno že imamo, in sicer z imenom RegExpReplace Čakajte, zakaj "nadomestiti", ko pa govorimo o odstranjevanju? V jeziku Excel je "odstraniti" le druga beseda za "nadomestiti s praznim nizom" :)

    Če želite funkcijo dodati v Excel, preprosto kopirajte njeno kodo s te strani, jo prilepite v urejevalnik VBA in shranite datoteko kot Delovni zvezek z omogočenimi makri (.xlsm).

    V pomoč vam je sintaksa funkcije:

    RegExpReplace(besedilo, vzorec, zamenjava, [številka primera], [primerjava_primera])

    Prvi trije argumenti so obvezni, zadnja dva sta neobvezna.

    Kje:

    • Besedilo - izvirni niz za iskanje.
    • Vzorec - regex za iskanje.
    • Zamenjava - besedilo, ki ga želite nadomestiti. Na odstranite beli presledki , nastavite ta argument na:
      • prazen niz ("") za obrezovanje popolnoma vseh presledkov
      • prostor znak (" ") za zamenjavo več presledkov z enim znakom presledka
    • Instance_num (neobvezno) - številka primerka. V večini primerov ga izpustite, če želite nadomestiti vse primerke (privzeto).
    • Match_case (neobvezno) - logarska vrednost, ki označuje, ali se velikost črk besedila ujema (TRUE) ali zanemarja (FALSE). Za bele prostore je nepomembna, zato je izpuščena.

    Za več informacij glejte funkcijo RegExpReplace.

    Kako odstraniti bele prostore z regexom - primeri

    Ko je funkcija RegExpReplace dodana v delovni zvezek, se lotimo različnih scenarijev po vrsti.

    Odstranitev vseh belih presledkov z uporabo regexa

    Če želite odstraniti vse presledke v nizu, preprosto poiščite kateri koli bel znak, vključno s presledkom, tabulatorjem, vrnitvijo vozička in podajanjem vrstice, in ga nadomestite s praznim nizom ("").

    Vzorec : \s+

    Zamenjava : ""

    Ob predpostavki, da je izvorni niz v A5, je formula v B5:

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

    Za lažje upravljanje vzorcev lahko regex vnesete v vnaprej določeno celico in ga formuli posredujete z absolutnim sklicem, kot je $A$2, tako da bo naslov celice pri kopiranju formule v stolpec ostal nespremenjen.

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

    Odstranite več kot en beli presledek

    Odstranitev dodatni beli prostor (tj. več kot en zaporedni presledek), uporabite enak regex \s+, vendar najdene zadetke nadomestite z enim samim presledkom.

    Vzorec : \s+

    Zamenjava : " "

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

    Bodite pozorni, da ta formula ohranja en znak presledka ne le med besedami, temveč tudi na začetku in koncu niza, kar ni dobro. Če se želite znebiti vodilnega in končnega belega prostora, zgornjo formulo vstavite v drugo funkcijo RegExpReplace, ki odstrani presledke z začetka in konca:

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

    Regex za odstranjevanje začetnega in končnega belega presledka

    Za iskanje belih znakov na začetku ali koncu vrstice uporabite začetno sidro ^ in končno sidro $.

    Vodilni beli prostor:

    Vzorec : ^[\s]+

    Sledi beli prostor:

    Vzorec : [\s]+$

    Vodilni in . končni beli prostor:

    Vzorec : ^[\s]+

    Ne glede na to, kateri regex izberete, nadomestite ujemanje z ničemer.

    Zamenjava : ""

    Če želite na primer odstraniti vse presledke na začetku in na koncu niza v A5, je formula naslednja:

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

    Kot je prikazano na spodnji sliki zaslona, se s tem odstranita le začetni in končni beli prostor. Presledki med besedami ostanejo nedotaknjeni in ustvarijo vizualno prijeten pogled za oko bralca.

    Odstranite dodatne bele prostore, vendar ohranite prelome vrstic

    Pri delu z večvrstičnimi nizi se boste morda želeli znebiti dodatnih presledkov, vendar ohraniti prelome vrstic. To lahko storite tako, da namesto znaka za belino \s poiščete presledke [ ] ali presledke in tabulatorje [\t ]. Slednji vzorec pride prav, kadar so izvorni podatki uvoženi iz drugega vira, npr. urejevalnika besedila.

    Predpostavimo, da želite v spodnjem naboru podatkov obrezati vse začetne/končne presledke in vse presledke razen enega, pri tem pa ohraniti več vrstic nedotaknjenih. Za izvedbo naloge potrebujete dve različni funkciji RegExpReplace.

    Prva funkcija zamenja več presledkov z enim samim presledkom.

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

    Druga odstrani presledke z začetka in konca vrstice:

    =RegExpReplace(A5, "^ +

    Preprosto vgnezdite obe funkciji eno v drugo:

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

    In dobili boste popoln rezultat:

    Regex za zamenjavo več presledkov z enim znakom

    Če želite iz niza odstraniti vse presledke in vsako skupino zaporednih presledkov nadomestiti z določenim znakom, morate storiti to:

    Najprej uporabite ta regex za obrezovanje začetnih in zadnjih belih presledkov:

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

    Nato zgornjo funkcijo prenesite v besedilo argument drugega RegExpReplace, ki nadomesti enega ali več zaporednih belih presledkov z navedenim znakom, npr. pomišljajem:

    Vzorec : \s+

    Zamenjava : -

    Ob predpostavki, da je izvorni niz v vrstici A8, ima formula naslednjo obliko:

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

    Lahko pa vzorce in zamenjave vnesete v ločene celice, kot je prikazano na sliki zaslona:

    Regex za odstranjevanje praznih vrstic

    Uporabniki, ki imajo v eni celici več vrstic, pogosto postavljajo naslednje vprašanje: "V mojih celicah je veliko praznih vrstic. Ali se jih lahko znebim drugače, kot da grem skozi vsako celico in ročno izbrišem vsako vrstico?" Odgovor: To je preprosto!

    Za ujemanje praznih vrstic, ki nimajo niti enega znaka od začetka ^ trenutne vrstice do naslednje vrstice \n, je regex naslednji:

    Vzorec : ^\n

    Če vaše vizualno prazne vrstice vsebujejo presledke ali tabulatorje, uporabite ta regularni izraz:

    Vzorec : ^[\t ]*\n

    Preprosto zamenjajte regex s praznim nizom z uporabo te formule in vse prazne vrstice bodo naenkrat izginile!

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

    Odstranjevanje belih presledkov z orodji RegEx

    Zgornji primeri so pokazali le majhen del čudovitih možnosti, ki jih ponujajo regularni izrazi. Na žalost v VBA niso na voljo vse funkcije klasičnih regularnih izrazov.

    Na srečo orodja RegEx, ki so vključena v naš komplet Ultimate Suite, nimajo teh omejitev, saj jih obdeluje Microsoftov pogon .NET RegEx. To vam omogoča oblikovanje zahtevnejših vzorcev, ki jih RegExp VBA ne podpira. V nadaljevanju najdete primer takšnega regularnega izraza.

    Regex za odstranjevanje presledka med številkami

    V alfanumeričnem nizu želite odstraniti bele presledke samo med številkami, tako da niz, kot je "A 1 2 B", postane "A 12 B".

    Za ujemanje belega presledka med katerima koli dvema številkama lahko uporabite naslednje obhodne rešitve:

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

    Če želite ustvariti formulo na podlagi zgornjih regeksov, morate izvesti dva preprosta koraka:

    1. Na Podatkovni zapisi o napravah Ablebits v zavihku Besedilo skupino, kliknite Orodja Regex .

    2. Na Orodja Regex izberite izvorne podatke, vnesite regex, izberite Odstranite in pritisnite Odstranite .

      Če želite rezultate dobiti kot formule in ne kot vrednosti, ne pozabite postaviti kljukice v polje Vstavite kot formulo potrditveno polje.

    Čez trenutek si boste ogledali AblebitsRegexRemove vstavljena v nov stolpec na desni strani prvotnih podatkov.

    Lahko pa vnesete regeks v neko celico, na primer A5, in formulo vstavite neposredno v celico z uporabo Funkcija vstavljanja pogovorno okno, v katerem AblebitsRegexRemove je kategorizirano pod AblebitsUDFs .

    Ker je ta funkcija posebej zasnovana za odstranjevanje nizov, potrebuje le dva argumenta - vhodni niz in regeks:

    =AblebitsRegexRemove(A5, $A$2)

    To je način odstranjevanja presledkov v Excelu z uporabo regularnih izrazov. Zahvaljujem se vam za branje in se veselim, da se naslednji teden vidimo na našem blogu!

    Razpoložljivi prenosi

    Odstranjevanje belih pik z regexom - primeri (.xlsm datoteka)

    Ultimate Suite - preizkusna različica (.exe datoteka)

    Michael Brown je predan tehnološki navdušenec s strastjo do poenostavljanja kompleksnih procesov z uporabo programskih orodij. Z več kot desetletnimi izkušnjami v tehnološki industriji je svoje veščine izpopolnil v Microsoft Excelu in Outlooku ter Google Preglednicah in Dokumentih. Michaelov blog je namenjen deljenju svojega znanja in strokovnega znanja z drugimi ter ponuja preproste nasvete in vadnice za izboljšanje produktivnosti in učinkovitosti. Ne glede na to, ali ste izkušen strokovnjak ali začetnik, Michaelov blog ponuja dragocene vpoglede in praktične nasvete, kako kar najbolje izkoristiti ta osnovna programska orodja.