Fjarlægðu hvítbil og tómar línur í Excel með Regex

  • Deildu Þessu
Michael Brown

Viltu meðhöndla hvíta bil á sem áhrifaríkastan hátt? Notaðu reglubundnar tjáningar til að fjarlægja öll bil í reit, skipta um mörg bil fyrir einn staf, klippa aðeins bil á milli talna og fleira.

Hvaða innsláttargögn sem þú notar muntu varla lenda í gagnasafn án bils. Í flestum tilfellum er hvítt bil gott - þú notar það til að aðgreina mismunandi upplýsingar sjónrænt til að gera það auðveldara að skynja. Í sumum tilfellum getur það hins vegar orðið illt - aukabil geta klúðrað formúlunum þínum og gert vinnublöðin þín næstum óviðráðanleg.

    Af hverju að nota reglulega tjáningu til að klippa hvítbil í Excel?

    Áður en við sækjumst inn í það að nota reglubundnar tjáningar til að fjarlægja bil í Excel vinnublöðum, langar mig að svara spurningunni sem kemur upp í hugann í fyrsta lagi - hvers vegna þurfum við regexes þegar Excel er nú þegar með TRIM fall?

    Til að skilja muninn skulum við sjá hvað telst vera hvítt bil í hverju tilviki:

    • Innbyggða TRIM aðgerðin getur aðeins fjarlægt bilstafinn sem hefur gildi 32 í 7-bita ASCII kerfinu.
    • Regluleg tjáning geta auðkennt nokkrar mismunandi gerðir af bili eins og bil ( ), flipa (\t), vagnsskil (\r) og nýtt lína (\n). Að auki er hvíta stafurinn (\s) sem passar við allar þessar tegundir og kemur mjög vel til að hreinsa hrá inntakgögn.

    Þegar þú veist nákvæmlega hvað gerist á bak við tjöldin, þá er miklu auðveldara að finna lausn, ekki satt?

    Hvernig á að virkja reglulegar tjáningar í Excel

    Það er vel þekkt staðreynd að út-af-the-box Excel styður ekki reglulegar tjáningar. Til að virkja þá þarftu að búa til sérsniðna VBA aðgerð. Sem betur fer höfum við nú þegar einn, sem heitir RegExpReplace . Bíddu, af hverju að "skipta út" á meðan við erum að tala um að fjarlægja? Í Excel tungumálinu er "fjarlægja" bara annað orð fyrir "skipta út fyrir tóman streng" :)

    Til að bæta aðgerðinni við Excel skaltu bara afrita kóðann af þessari síðu, líma hann í VBA ritlinum , og vistaðu skrána þína sem macro-virkjað vinnubók (.xlsm).

    Hér er setningafræði fallsins til viðmiðunar:

    RegExpReplace(texti, mynstur, skipti, [tilvik_númer] , [match_case])

    Fyrstu þrjú rökin eru nauðsynleg, síðustu tvær eru valfrjálsar.

    Hvar:

    • Texti - upprunalega strengurinn til leitaðu í.
    • Mynstur - regex til að leita að.
    • Replacement - textinn sem á að skipta út fyrir. Til að fjarlægja hvítt bil , myndirðu stilla þessi rök á annað hvort:
      • tóm streng ("") til að klippa algjörlega öll bil
      • bil staf (" ") til að skipta út mörgum bilum fyrir einn bilstaf
    • Tilviksnúmer (valfrjálst) - tilviksnúmerið. Í flestum tilfellum muntu sleppa því til að skipta um öll tilvik(sjálfgefið).
    • Match_case (valfrjálst) - Boolean gildi sem gefur til kynna hvort passa (TRUE) eða hunsa (FALSE) texta. Fyrir hvíta bil er það óviðkomandi og því sleppt.

    Nánari upplýsingar er að finna í RegExpReplace aðgerðina.

    Hvernig á að fjarlægja hvíta bil með regex - dæmi

    Með RegExpReplace aðgerð bætt við vinnubókina þína, við skulum takast á við mismunandi aðstæður eitt í einu.

    Fjarlægðu öll bil með því að nota regex

    Til að fjarlægja öll bil í streng, leitarðu einfaldlega að hvaða bili sem er, þ.m.t. bil, flipa, vagnsskil og línustraum, og skiptu þeim út fyrir tóman streng ("").

    Mynstur : \s+

    Skiptir : ""

    Að því gefnu að upprunastrengurinn sé í A5 er formúlan í B5:

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

    Til að auðvelda stjórnun á mynstrum þínum , þú getur sett inn regex í fyrirfram skilgreindan reit og sett það í formúluna með því að nota algera tilvísun eins og $A$2, svo vistfang reitsins verður óbreytt þegar formúlan er afrituð niður í dálkinn.

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

    Fjarlægja fleiri en eitt bil

    Til að fjarlægja auka bil (þ.e. fleiri en n eitt bil í röð), notaðu sama regex \s+ en skiptu út samsvörunum sem fundust fyrir einn bilstaf.

    Mynstur : \s+

    Skiptir : " "

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

    Vinsamlegast athugaðu að þessi formúla heldur einu bili ekki aðeins á millifyrir neðan gagnasafn, gerðu ráð fyrir að þú viljir klippa öll fremstu/aftandi rými og öll nema eitt rými á milli, halda mörgum línum óskertum. Til að framkvæma verkefnið þarftu tvær mismunandi RegExpReplace aðgerðir.

    Fyrsta aðgerðin kemur í stað margra bila með einum bilstaf.

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

    Hin tekur út bil. frá upphafi og enda línu:

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

    Hreiðu bara föllin tvö inn í aðra:

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

    Og þú færð fullkomin niðurstaða:

    Regex til að skipta út mörgum bilum fyrir einn staf

    Ef þú vilt fjarlægja öll bil úr streng og skipta út hverjum hópi samfelldra bila með ákveðnum staf, þetta er það sem þú þarft að gera:

    Í fyrsta lagi, notaðu þetta regex til að klippa fremstu og aftan bila:

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

    Þá skaltu nota ofangreinda aðgerð við texta röksemdafærslu annars RegExpReplace sem kemur í stað einn eða fleiri hvíta bila í röð fyrir staf sem þú tilgreinir, t.d. bandstrik:

    Mynstur : \s+

    Skiptir : -

    Að því gefnu að upprunastrengurinn sé í A8, formúlan tekur þessa lögun:

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

    Eða þú getur slegið inn mynstur og skipti í aðskildum hólfum eins og sýnt er á skjámyndinni:

    Regex til að fjarlægja tómar línur

    Hér er spurning sem notendur sem hafa margar línur í einum reit spyrja oft: "Það eru margar auðar línur í reitunum mínum. Er einhver leið til að fálosa sig við þær annað en að fara í gegnum hvern reit og eyða hverri línu handvirkt?" Svarið: Það er auðvelt!

    Til að passa saman tómar línur sem hafa ekki einn staf frá upphafi ^ núverandi línu upp í næsta lína \n, regex er:

    Mynstur : ^\n

    Ef sjónrænt auðar línur innihalda bil eða flipa skaltu nota þessa reglulegu tjáningu:

    Mynstur : ^[\t ]*\n

    Skiptu bara út regex fyrir tóman streng með þessari formúlu, og allar auðar línur hverfa í einu!

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

    Fjarlægir hvítbil með RegEx tólum

    Dæmin hér að ofan hafa sýnt aðeins lítinn hluta af frábærum möguleikum sem regexes bjóða upp á. Því miður eru ekki allir eiginleikar klassískra reglulegra tjáninga eru fáanlegir í VBA.

    Sem betur fer eru RegEx tólin sem fylgja Ultimate Suite okkar laus við þessar takmarkanir þar sem þau eru unnin af .NET RegEx vél Microsoft. Þetta gerir þér kleift að búa til flóknari mynstur sem eru ekki studdar af VBA RegExp. Belo w þú munt finna dæmi um slíka reglubundna tjáningu.

    Regex til að fjarlægja bil á milli talna

    Í alfanumerískum streng, segjum að þú viljir fjarlægja bil á milli talna eingöngu, þannig að strengur eins og „A 1 2 B“ verður „A 12 B“.

    Til að passa bil á milli tveggja stafa tölu geturðu notað eftirfarandi útlit:

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

    Til að búa til formúlu byggðaá ofangreindum regexes, hér eru tvö einföld skref til að framkvæma:

    1. Á flipanum Ablebits Data , í Text hópnum, smelltu á Regex Verkfæri .

    2. Á Regex Tools glugganum, veldu upprunagögnin, sláðu inn regex, veldu Fjarlægja valmöguleika og ýttu á Fjarlægja .

      Til að fá niðurstöðurnar sem formúlur, ekki gildi, mundu að setja hak í gátreitinn Setja inn sem formúla .

    Eftir augnablik muntu sjá aðgerðina AblebitsRegexRemove sett inn í nýjan dálk hægra megin við upprunalegu gögnin.

    Að öðrum kosti geturðu sett inn regex í einhverjum reit , segðu A5, og settu formúluna beint inn í reit með því að nota Insert Function valmyndina, þar sem AblebitsRegexRemove er flokkað undir AblebitsUDFs .

    Þar sem þessi aðgerð er sérstaklega hönnuð til að fjarlægja strengi, þarf hún aðeins tvö rök - inntaksstrenginn og regex:

    =AblebitsRegexRemove(A5, $A$2)

    Svona á að fjarlægja bil í Excel með venjulegum segðum. Ég þakka þér fyrir lesturinn og hlakka til að sjá þig á blogginu okkar í næstu viku!

    Laust niðurhal

    Fjarlægja hvítbil með regex - dæmi (.xlsm skrá)

    Ultimate Suite - prufuútgáfa (.exe skrá)

    orð en líka í upphafi og enda strengs, sem er ekki gott. Til að losna við fremsta og aftan hvíta bil, hreiður formúluna hér að ofan í aðra RegExpReplace aðgerð sem ræmur bil frá upphafi og enda:

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

    Regex til fjarlægðu fremsta og aftan bila

    Til að leita að hvítu bili í upphafi eða enda línu skaltu nota upphafs ^ og enda $ akkeri.

    Fyrir hvítbil:

    Mynstur : ^[\s]+

    Aftan hvítbil:

    Mynstur : [\s ]+$

    Leiðandi og eftir hvítbil:

    Mynstur : ^[\s]+

    Michael Brown er hollur tækniáhugamaður með ástríðu fyrir því að einfalda flókna ferla með hugbúnaðarverkfærum. Með meira en áratug af reynslu í tækniiðnaðinum hefur hann aukið færni sína í Microsoft Excel og Outlook, sem og Google Sheets og Docs. Blogg Michael er tileinkað því að deila þekkingu sinni og sérfræðiþekkingu með öðrum, veita auðveld ráð og leiðbeiningar til að bæta framleiðni og skilvirkni. Hvort sem þú ert vanur fagmaður eða byrjandi, þá býður blogg Michaels upp á dýrmæta innsýn og hagnýt ráð til að fá sem mest út úr þessum nauðsynlegu hugbúnaðarverkfærum.