Wite spaasjes en lege rigels fuortsmite yn Excel mei Regex

  • Diel Dit
Michael Brown

Wolle wite romten op de meast effektive manier behannelje? Brûk reguliere útdrukkingen om alle spaasjes yn in sel te ferwiderjen, meardere spaasjes te ferfangen troch ien karakter, allinich spaasjes tusken sifers ôfsnije, en mear.

Hoefoar ynfiergegevens jo ek brûke, jo sille amper in tsjinkomme dataset sûnder spaasjes. Yn 'e measte gefallen is wite romte goed - jo brûke it om ferskate stikken ynformaasje visueel te skieden om it makliker te meitsjen. Yn guon situaasjes kin it lykwols kwea wurde - ekstra spaasjes kinne jo formules fergriemje en jo wurkblêden hast net te behearjen meitsje.

    Wêrom reguliere ekspresje brûke om wite romten yn Excel te trimmen?

    Foardat wy dûke yn it nitty-gritty fan it brûken fan reguliere útdrukkingen om wite spaasjes yn Excel-wurkblêden te ferwiderjen, wol ik graach de fraach oanpakke dy't yn 't earste plak opkomt - wêrom hawwe wy regexes nedich as Excel al de TRIM hat funksje?

    Om it ferskil te begripen, litte wy sjen wat yn elk gefal as wite romte wurdt beskôge:

    • De ynboude TRIM-funksje kin allinich it romtekarakter strippe dat wearde 32 hat yn it 7-bit ASCII-systeem.
    • Reguliere útdrukkingen kinne in pear ferskillende foarmen fan wite romte identifisearje, lykas de romte ( ), ljepper (\t), carriage return (\r), en nij line (\n). Derneist is d'r it wytromtekarakter (\s) dat oerienkomt mei al dizze typen en is ekstreem nuttich foar it skjinmeitsjen fan rau ynfiergegevens.

    Om krekt te witten wat der efter de skermen bart, is it in stik makliker om in oplossing út te wurkjen, krekt?

    Hoe kinne jo reguliere útdrukkingen ynskeakelje yn Excel

    It is in bekend feit dat out-of-the-box Excel gjin reguliere útdrukkingen stipet. Om se yn te skeakeljen, moatte jo in oanpaste VBA-funksje oanmeitsje. Gelokkich hawwe wy al ien, mei de namme RegExpReplace . Wachtsje, wêrom "ferfange" wylst wy it hawwe oer it fuortheljen? Yn 'e Excel-taal is "ferwiderje" gewoan in oar wurd foar "ferfange mei in lege tekenrige" :)

    Om de funksje oan jo Excel ta te foegjen, kopiearje gewoan de koade fan dizze side, plak it yn 'e VBA-bewurker , en bewarje jo bestân as in makro-ynskeakele wurkboek (.xlsm).

    Hjir is de syntaksis fan de funksje foar jo referinsje:

    RegExpReplace(tekst, patroan, ferfanging, [instance_num] , [match_case])

    De earste trije arguminten binne ferplicht, de lêste twa binne opsjoneel.

    Wêr:

    • Tekst - de oarspronklike tekenrige nei sykje yn.
    • Patroan - de regex om te sykjen.
    • Ferfanging - de tekst om mei te ferfangen. Om ferwiderje wite spaasjes , soene jo dit argumint ynstelle op ien fan:
      • lege tekenrige ("") om absolút alle spaasjes te trimmen
      • romte karakter (" ") om meardere spaasjes te ferfangen troch ien spaasjeteken
    • Instance_num (opsjoneel) - it eksimplaarnûmer. Yn 'e measte gefallen sille jo it oerlitte om alle eksimplaren te ferfangen(standert).
    • Match_case (opsjoneel) - in Booleaanske wearde dy't oanjout of it oerienkomt mei (TRUE) of negearje (FALSE) tekstcase. Foar wite spaasjes is it irrelevant en dêrom weilitten.

    Foar mear ynformaasje sjoch asjebleaft RegExpReplace-funksje.

    Hoe kinne jo wite romte fuortsmite mei regex - foarbylden

    Mei de RegExpReplace-funksje tafoege oan jo wurkboek, litte wy ferskate senario's ien foar ien oanpakke.

    Alle wite spaasjes fuortsmite mei regex

    Om alle spaasjes yn in tekenrige te ferwiderjen, sykje jo gewoan nei elk witspaasjekarakter, ynklusyf in spaasje, in ljepper, in koets werom en in line feed, en ferfange se mei in lege tekenrige ("").

    Patroan : \s+

    Ferfanging : ""

    Aannommen dat de boarnestring yn A5 is, is de formule yn B5:

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

    Om it makliker te meitsjen om jo patroanen te behearjen , kinne jo de regex ynfiere yn in foarôf definieare sel en it oan 'e formule leverje mei in absolute referinsje lykas $A$2, sadat it seladres net feroare bliuwt by it kopiearjen fan de formule nei de kolom.

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

    Ferwiderje mear dan ien wite romte

    Om ekstra wite romte te ferwiderjen (d.w.s. mear dan n ien opfolgjende spaasjes), brûke deselde regex \s+, mar ferfange de fûn wedstriden mei ien spaasje karakter.

    Patroan : \s+

    Replacement : " "

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

    Let op dat dizze formule ien spaasje net allinnich hâldt tuskenûnder dataset, stel dat jo alle foaroansteande / eftersteande spaasjes wolle trimje en allegear op ien tusken spaasjes, mei meardere rigels yntakt hâlde. Om de taak út te fieren, hawwe jo twa ferskillende RegExpReplace-funksjes nedich.

    De earste funksje ferfangt meardere spaasjes mei ien spaasjekarakter.

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

    De oare stript spaasjes fan it begjin en ein fan in rigel:

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

    Nêst de twa funksjes gewoan yn elkoar:

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

    En jo krije in perfekt resultaat:

    Regex om meardere spaasjes te ferfangen troch ien karakter

    Yn gefal jo alle spaasjes fan in tekenrige fuortsmite wolle en elke groep opfolgjende spaasjes ferfange wolle mei in spesifyk karakter, dit is wat jo moatte dwaan:

    Brûk earst dizze regex om liedende en efterste wite spaasjes te trimmen:

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

    Danje, tsjinje de boppesteande funksje nei it tekst -argumint fan in oar RegExpReplace dat ien of mear opienfolgjende wite spaasjes ferfangt mei it karakter dat jo oantsjutte, bgl. in koppelteken:

    Patroan : \s+

    Ferfanging : -

    Troch oannimme dat de boarnestring yn A8 is, is de formule nimt dizze foarm oan:

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

    Of jo kinne de patroanen en ferfangings ynfiere yn aparte sellen lykas werjûn yn it skermôfbylding:

    Regex lege rigels te ferwiderjen

    Hjir is in fraach dy't brûkers dy't meardere rigels yn ien sel hawwe faak freegje: "Der binne in protte lege rigels yn myn sellen. Is d'r ien manier om te krijenlos fan harren oars dan troch elke sel hinne te gean en elke rigel mei de hân te wiskjen?" It antwurd: Dat is maklik!

    Om lege rigels te passen dy't gjin inkeld karakter hawwe fan it begjin ^ fan 'e hjoeddeistige rigel oant de folgjende rigel \n, de regex is:

    Patroan : ^\n

    As jo ​​visueel lege rigels spaasjes of ljeppers befetsje, brûk dan dizze reguliere ekspresje:

    Patroan : ^[\t ]*\n

    Ferfang de regex gewoan troch in lege tekenrige mei dizze formule, en alle lege rigels sille tagelyk fuort wêze!

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

    Whitespaces fuortsmite mei RegEx-ark

    De boppesteande foarbylden hawwe mar in lyts part fan prachtige mooglikheden oantoand troch regexes. Spitigernôch binne net alle eigenskippen fan klassike reguliere útdrukkingen binne beskikber yn VBA.

    Gelokkich binne de RegEx-ark yn ús Ultimate Suite frij fan dizze beheiningen, om't se wurde ferwurke troch Microsoft's .NET RegEx-motor. Hjirmei kinne jo mear ferfine patroanen konstruearje dy't wurde net stipe troch VBA RegExp. Belo w fine jo in foarbyld fan sa'n reguliere ekspresje.

    Regex om romte tusken getallen te ferwiderjen

    Stel yn in alfanumerike tekenrige dat jo allinich wite spaasjes tusken getallen fuortsmite wolle, dus in tekenrige lykas "A 1 2 B" wurdt "A 12 B".

    Om in wite romte tusken twa sifers oer te passen, kinne jo de folgjende omsjoch brûke:

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

    Om in formule basearre te meitsjenop de boppesteande regexes, hjir binne twa maklike stappen om út te fieren:

    1. Op de Ablebits Data ljepper, yn de Tekst groep, klikje op Regex Tools .

    2. Selektearje yn it paniel Regex Tools de boarnegegevens, fier jo regex yn, kies de Remove opsje, en klik op Fuortsmite .

      Om de resultaten te krijen as formules, net as wearden, tink dan om in kar te setten yn it karfakje Infoegje as formule .

    Yn in momint sille jo de funksje AblebitsRegexRemove sjen yn in nije kolom rjochts fan 'e orizjinele gegevens ynfoege.

    As alternatyf kinne jo de regex ynfiere yn guon sel , sis A5, en foegje de formule direkt yn in sel yn mei it dialoochfinster Funksje ynfoegje , wêrby't AblebitsRegexRemove is kategorisearre ûnder AblebitsUDFs .

    Om't dizze funksje spesjaal ûntworpen is foar it fuortheljen fan snaren, fereasket it mar twa arguminten - de ynfierstring en regex:

    =AblebitsRegexRemove(A5, $A$2)

    Dat is hoe spaasjes yn te ferwiderjen Excel mei help fan reguliere útdrukkingen. Ik tankje jo foar it lêzen en sjoch út nei jo te sjen op ús blog nije wike!

    Beskikbere downloads

    Witteromte fuortsmite mei regex - foarbylden (.xlsm-bestân)

    Ultimate Suite - proefferzje (.exe-bestân)

    wurden mar ek oan it begjin en ein fan in snaar, dat is net goed. Om fan liedende en efterlizzende wite romte ôf te kommen, nêst de boppesteande formule yn in oare RegExpReplace-funksje dy't spaasjes fan it begjin en ein stript:

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

    Regex nei fuortsmite foaroansteande en efterlizzende wite romte

    Om te sykjen nei wite romte oan it begjin of ein fan in rigel, brûk de start ^ en ein $ ankers.

    Leading whitespace:

    Patroan : ^[\s]+

    Trailing whitespace:

    Patroan : [\s ]+$

    Leading en trailing whitespace:

    Patroan : ^[\s]+

    Michael Brown is in tawijd technology-entûsjast mei in passy foar it ferienfâldigjen fan komplekse prosessen mei software-ark. Mei mear as in desennium ûnderfining yn 'e tech-yndustry hat hy syn feardigens yn Microsoft Excel en Outlook, lykas Google Blêden en Docs, oanskerpe. Michael's blog is wijd oan it dielen fan syn kennis en ekspertize mei oaren, en biedt maklik te folgjen tips en tutorials foar it ferbetterjen fan produktiviteit en effisjinsje. Oft jo in betûfte profesjonele of in begjinner binne, Michael's blog biedt weardefolle ynsjoch en praktysk advys om it measte út dizze essensjele software-ark te heljen.