Baltųjų tarpų ir tuščių eilučių pašalinimas programoje "Excel" naudojant "Regex

  • Pasidalinti
Michael Brown

Norite kuo efektyviau tvarkyti baltąsias dėmes? Naudokite reguliarias išraiškas, kad pašalintumėte visus ląstelėje esančius tarpus, pakeistumėte kelis tarpus vienu simboliu, apkarpytumėte tarpus tik tarp skaičių ir dar daugiau.

Kad ir kokius įvesties duomenis naudotumėte, vargu ar susidursite su duomenų rinkiniu be tarpų. Daugeliu atvejų baltosios vietos yra gerai - jomis vizualiai atskiriamos skirtingos informacijos dalys, kad jas būtų lengviau suvokti. Tačiau kai kuriais atvejais jos gali tapti blogiu - papildomi tarpai gali sugadinti jūsų formules ir padaryti darbalapius beveik nevaldomus.

    Kodėl reikia naudoti reguliariąją išraišką baltųjų tarpų apkarpymui "Excel" programoje?

    Prieš pradėdami gilintis į reguliariosios išraiškos naudojimo "Excel" darbalapiuose baltiesiems tarpams pašalinti smulkmenas, norėčiau atsakyti į klausimą, kuris pirmiausia kyla į galvą - kam mums reikalingos regeksinės išraiškos, jei "Excel" jau turi TRIM funkciją?

    Kad suprastume skirtumą, pažiūrėkime, kas kiekvienu atveju laikoma baltąja raide:

    • Integruota TRIM funkcija gali pašalinti tik tarpo simbolis kurio reikšmė 7 bitų ASCII sistemoje yra 32.
    • Reguliariosios išraiškos gali nustatyti keletą skirtingų baltosios eilutės formų, pvz., tarpą ( ), skirtuką (\t), grįžtamąją eilutę (\r) ir naują eilutę (\n). baltasis simbolis (\s), kuris atitinka visus šiuos tipus ir yra labai naudingas valant neapdorotus įvesties duomenis.

    Tiksliai žinant, kas vyksta užkulisiuose, daug lengviau rasti sprendimą, tiesa?

    Kaip įjungti reguliarias išraiškas programoje "Excel

    Gerai žinoma, kad "Excel" nepalaiko reguliariųjų išraiškų. Norint jas įjungti, reikia sukurti pasirinktinę VBA funkciją. Laimei, mes jau turime vieną, pavadintą RegExpReplace . Palaukite, kodėl "pakeisti", kai kalbame apie pašalinimą? "Excel" kalboje "pašalinti" yra tik kitas žodis, reiškiantis "pakeisti tuščia eilute" :)

    Norėdami įtraukti funkciją į "Excel", tiesiog nukopijuokite jos kodą iš šio puslapio, įklijuokite jį į VBA redaktorių ir išsaugokite failą kaip darbaknygė su makrokomandomis (.xlsm).

    Pateikiame funkcijos sintaksę:

    RegExpReplace(tekstas, šablonas, pakeitimas, [instance_num], [match_case])

    Pirmieji trys argumentai yra privalomi, paskutiniai du - neprivalomi.

    Kur:

    • Tekstas - pradinę eilutę, kurios reikia ieškoti.
    • Modelis - regex, kurio reikia ieškoti.
    • Pakaitinis - tekstą, kurį reikia pakeisti. Į pašalinti baltosios vietos , nustatysite šį argumentą kaip:
      • tuščia eilutė (""), kad būtų iškirpti visi tarpai
      • erdvė simbolis (" "), jei norite pakeisti kelis tarpelius vienu tarpo ženklu
    • Instance_num (neprivaloma) - egzemplioriaus numeris. Daugeliu atvejų jo nepateiksite, jei norite pakeisti visus egzempliorius (numatytoji reikšmė).
    • Match_case (neprivaloma) - loginė reikšmė, nurodanti, ar teksto raidės turi būti suderintos (TRUE), ar ignoruojamos (FALSE). Baltųjų ženklų atveju ji nesvarbi, todėl praleidžiama.

    Daugiau informacijos rasite dalyje Funkcija RegExpReplace.

    Kaip pašalinti baltąsias eilutes naudojant regex - pavyzdžiai

    Į sąsiuvinį įtraukę "RegExpReplace" funkciją, po vieną spręskime įvairius scenarijus.

    Pašalinkite visas baltąsias erdves naudodami regex

    Norėdami pašalinti visus eilutėje esančius tarpus, paprasčiausiai ieškokite bet kurio baltojo simbolio, įskaitant tarpą, skirtuką, vežimėlio grąžinimą ir eilutės padavimą, ir pakeiskite jį tuščia eilute ("").

    Modelis : \s+

    Pakaitinis : ""

    Darant prielaidą, kad šaltinio eilutė yra A5, B5 formulė yra tokia:

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

    Kad būtų lengviau tvarkyti šablonus, galite įvesti regeksą iš anksto nustatytoje ląstelėje ir pateikti ją formulei naudodami absoliučią nuorodą, pavyzdžiui, $A$2, kad ląstelės adresas liktų nepakitęs kopijuojant formulę į stulpelį.

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

    Pašalinti daugiau nei vieną baltąjį tarpą

    Pašalinti papildomų baltųjų tarpų (t. y. daugiau nei vienas tarpas iš eilės), naudokite tą pačią regeksinę formulę \s+, bet pakeiskite rastus atitikmenis vienu tarpo ženklu.

    Modelis : \s+

    Pakaitinis : " "

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

    Atkreipkite dėmesį, kad šioje formulėje vienas tarpo ženklas paliekamas ne tik tarp žodžių, bet ir eilutės pradžioje ir pabaigoje, o tai nėra gerai. Norėdami atsikratyti pradinių ir galinių baltųjų tarpų, pirmiau pateiktą formulę įterpkite į kitą "RegExpReplace" funkciją, kuri pašalina tarpelius iš pradžios ir pabaigos:

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

    "Regex", skirta pradiniams ir galiniams baltiems simboliams pašalinti

    Jei norite ieškoti baltųjų tarpų eilutės pradžioje arba pabaigoje, naudokite pradžios ^ ir pabaigos $ inkarus.

    Vadovaujantis baltosios raidės:

    Modelis : ^[\s]+

    Trailing baltosios raidės:

    Modelis : [\s]+$

    Vadovaujantis ir sekantis baltosios raidės:

    Modelis : ^[\s]+

    Kad ir kokią regex pasirinktumėte, pakeiskite atitikmenis niekuo.

    Pakaitinis : ""

    Pavyzdžiui, norint pašalinti visus tarpus A5 eilutės pradžioje ir pabaigoje, formulė yra tokia:

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

    Kaip parodyta toliau pateiktoje ekrano nuotraukoje, pašalinami tik pradiniai ir galiniai baltieji tarpai. Tarpai tarp žodžių lieka nepakitę, todėl skaitytojo akiai sukuriamas vizualiai malonus vaizdas.

    Pašalinkite papildomus baltuosius ženklus, bet palikite eilučių pertraukas

    Dirbdami su kelių eilučių eilutėmis galite norėti atsikratyti papildomų tarpų, bet išsaugoti eilučių pertraukas. Norėdami tai padaryti, vietoj baltosios eilutės simbolio \s ieškokite tarpų [ ] arba tarpų ir skirtukų [\t ]. Pastarasis šablonas praverčia, kai pradiniai duomenys importuojami iš kito šaltinio, pvz., teksto redaktoriaus.

    Tarkime, kad toliau pateiktame duomenų rinkinyje norite iškirpti visus pradinius ir (arba) galinius tarpus ir visus tarpinius tarpus, išskyrus vieną, ir palikti nepaliestas kelias eilutes. Šiai užduočiai atlikti reikės dviejų skirtingų "RegExpReplace" funkcijų.

    Pirmoji funkcija pakeičia kelis tarpelius vienu tarpo ženklu.

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

    Kita pašalina tarpus iš eilutės pradžios ir pabaigos:

    =RegExpReplace(A5, "^ +

    Tiesiog įterpkite šias dvi funkcijas vieną į kitą:

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

    Ir gausite puikų rezultatą:

    "Regex", skirta pakeisti kelis tarpus vienu simboliu

    Jei norite iš eilutės pašalinti visus tarpus ir kiekvieną iš eilės einančių tarpų grupę pakeisti tam tikru simboliu, reikia atlikti šiuos veiksmus:

    Pirmiausia naudokite šią regex formuluotę, kad iškirptumėte pradines ir galines baltąsias erdves:

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

    Tada pirmiau nurodytą funkciją pateikite tekstas argumentas kito RegExpReplace, kuris vieną ar daugiau iš eilės einančių baltųjų tarpų pakeičia nurodytu ženklu, pvz., brūkšneliu:

    Modelis : \s+

    Pakaitinis : -

    Darant prielaidą, kad šaltinio eilutė yra A8 eilutėje, formulė įgauna tokią formą:

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

    Arba galite įvesti modelius ir pakeitimus atskirose ląstelėse, kaip parodyta paveikslėlyje:

    "Regex" tuščioms eilutėms pašalinti

    Štai klausimas, kurį dažnai užduoda naudotojai, vienoje ląstelėje turintys daug eilučių: "Mano ląstelėse yra daug tuščių eilučių. Ar yra koks nors kitas būdas jų atsikratyti, kaip tik pereiti per kiekvieną ląstelę ir ištrinti kiekvieną eilutę rankiniu būdu?" Atsakymas: Tai paprasta!

    Tuščioms eilutėms, kuriose nėra nė vieno simbolio nuo dabartinės eilutės pradžios ^ iki kitos eilutės \n, priderinti regeksas yra toks:

    Modelis : ^\n

    Jei vizualiai tuščiose eilutėse yra tarpų arba skirtukų, naudokite šią reguliariąją išraišką:

    Modelis : ^[\t ]*\n

    Tiesiog pakeiskite regeksą tuščia eilute, naudodami šią formulę, ir visos tuščios eilutės iš karto bus panaikintos!

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

    Baltųjų tarpų šalinimas naudojant "RegEx" įrankius

    Aukščiau pateikti pavyzdžiai parodė tik nedidelę dalį nuostabių regeksų teikiamų galimybių. Deja, ne visos klasikinių reguliariųjų išraiškų funkcijos prieinamos VBA.

    Laimei, "RegEx" įrankiai, įtraukti į mūsų "Ultimate Suite" rinkinį, neturi šių apribojimų, nes juos apdoroja "Microsoft" .NET "RegEx" variklis. Tai leidžia kurti sudėtingesnius šablonus, kurių nepalaiko VBA "RegExp". Toliau rasite tokios reguliariosios išraiškos pavyzdį.

    "Regex" tarpams tarp skaičių pašalinti

    Tarkime, kad raidžių ir skaičių eilutėje norite pašalinti baltąsias tarpus tik tarp skaičių, todėl tokia eilutė kaip "A 1 2 B" tampa "A 12 B".

    Jei norite, kad tarp bet kurių dviejų skaitmenų būtų baltasis tarpas, galite naudoti šiuos apėjimo būdus:

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

    Norėdami sukurti formulę pagal pirmiau nurodytas regekses, atlikite du nesudėtingus veiksmus:

    1. Dėl Ablebitų duomenys skirtuke Tekstas grupę, spustelėkite "Regex" įrankiai .

    2. Dėl "Regex" įrankiai lange pasirinkite šaltinio duomenis, įveskite regeksą, pasirinkite Pašalinti parinktį ir paspauskite Pašalinti .

      Jei norite gauti rezultatus kaip formules, o ne kaip reikšmes, nepamirškite pažymėti varnele Įterpti kaip formulę žymimasis langelis.

    Po akimirkos pamatysite AblebitsRegexRemove funkcija įterpiama į naują stulpelį, esantį pradinių duomenų dešinėje.

    Taip pat galite įvesti regeksą į kurią nors ląstelę, pvz., A5, ir įterpti formulę tiesiai į ląstelę naudodami Įterpimo funkcija dialogo langą, kuriame AblebitsRegexRemove priskiriama kategorijai AblebitsUDFs .

    Kadangi ši funkcija specialiai sukurta eilutėms šalinti, jai reikia tik dviejų argumentų - įvesties eilutės ir regex:

    =AblebitsRegexRemove(A5, $A$2)

    Štai kaip pašalinti tarpus "Excel" programoje naudojant reguliarias išraiškas. Dėkoju, kad perskaitėte, ir laukiu jūsų mūsų tinklaraštyje kitą savaitę!

    Galimi atsisiuntimai

    Baltųjų simbolių šalinimas naudojant regex - pavyzdžiai (.xlsm failas)

    "Ultimate Suite" - bandomoji versija (.exe failas)

    Michaelas Brownas yra atsidavęs technologijų entuziastas, mėgstantis supaprastinti sudėtingus procesus naudojant programinės įrangos įrankius. Turėdamas daugiau nei dešimtmetį patirtį technologijų pramonėje, jis patobulino savo įgūdžius „Microsoft Excel“ ir „Outlook“, taip pat „Google“ skaičiuoklėse ir dokumentuose. Michaelio tinklaraštis skirtas dalytis savo žiniomis ir patirtimi su kitais, jame pateikiami lengvai įgyvendinami patarimai ir vadovėliai, kaip pagerinti produktyvumą ir efektyvumą. Nesvarbu, ar esate patyręs profesionalas, ar pradedantysis, Michaelo tinklaraštyje rasite vertingų įžvalgų ir praktinių patarimų, kaip išnaudoti visas šių pagrindinių programinės įrangos įrankių galimybes.