Forigu blankspacojn kaj malplenajn liniojn en Excel uzante Regex

  • Kundividu Ĉi Tion
Michael Brown

Ĉu vi volas trakti blankspacojn en la plej efika maniero? Uzu regulajn esprimojn por forigi ĉiujn spacojn en ĉelo, anstataŭigi plurajn spacojn per unu signo, tranĉi spacojn nur inter ciferoj, kaj pli.

Kiu ajn enigo-datumoj vi uzas, vi apenaŭ renkontos datumaro sen spacoj. Plejofte, blankspaco estas bona - vi uzas ĝin por vide apartigi malsamajn informojn por faciligi ĝin percepti. En iuj situacioj, tamen, ĝi povas fariĝi malbona - kromaj spacoj povas fuŝi viajn formulojn kaj igi viajn laborfoliojn preskaŭ neregeblaj.

    Kial uzi regulan esprimon por tranĉi blankspacojn en Excel?

    Antaŭ ol ni plonĝi en la deĵoron uzi regulajn esprimojn por forigi blankspacojn en Excel-laborfolioj, mi ŝatus trakti la demandon, kiu venas al la menso unue - kial ni bezonas regeksojn kiam Excel jam havas la TRIM. funkcio?

    Por kompreni la diferencon, ni vidu, kio estas konsiderata blankspaco en ĉiu kazo:

    • La enkonstruita TRIM-funkcio povas nur nuligi la spacsignon kiu havas valoron 32 en la 7-bita ASCII-sistemo.
    • Regulaj esprimoj povas identigi kelkajn malsamajn formojn de blankspaco kiel ekzemple la spaco ( ), langeto (\t), kaleŝoreveno (\r), kaj nova. linio (\n). Aldone, estas la blankspaco-signo (\s) kiu kongruas kun ĉiuj ĉi tiuj tipoj kaj ege utilas por purigi krudan enigaĵon.datumoj.

    Sciante precize kio okazas malantaŭ la kulisoj, estas multe pli facile ellabori solvon, ĉu ne?

    Kiel ebligi regulajn esprimojn en Excel

    Estas bone konata fakto, ke ekstere de la skatolo Excel ne subtenas regulajn esprimojn. Por ebligi ilin, vi devas krei kutiman VBA-funkcion. Feliĉe, ni jam havas unu, nomitan RegExpReplace . Atendu, kial "anstataŭigi" dum ni parolas pri forigo? En la lingvo Excel, "forigi" estas nur alia vorto por "anstataŭigi per malplena ĉeno" :)

    Por aldoni la funkcion al via Excel, simple kopiu ĝian kodon el ĉi tiu paĝo, algluu ĝin en la VBA-redaktilo. , kaj konservu vian dosieron kiel makro-ebligita laborlibro (.xlsm).

    Jen la sintakso de la funkcio por via referenco:

    RegExpReplace(teksto, ŝablono, anstataŭaĵo, [instance_num] , [match_case])

    La unuaj tri argumentoj estas postulataj, la lastaj du estas laŭvolaj.

    Kie:

    • Teksto - la origina ĉeno al serĉu en.
    • Modelo - la regex serĉenda.
    • Anstataŭaĵo - la teksto por anstataŭigi. Por forigi blankspacojn , vi agordus ĉi tiun argumenton al aŭ:
      • malplena ĉeno ("") por tranĉi absolute ĉiujn spacojn
      • spaco karaktero (" ") por anstataŭigi plurajn spacojn per ununura spaca signo
    • Okazo_num (laŭvola) - la instanca numero. Plejofte, vi preterlasos ĝin por anstataŭigi ĉiujn okazojn(defaŭlte).
    • Match_case (laŭvola) - Bulea valoro indikanta ĉu kongrui (VERA) aŭ ignori (FALSA) tekst-minuskle. Por blankspaco, ĝi estas negrava kaj tial ellasita.

    Por pliaj informoj, bonvolu vidi RegExpReplace-funkcion.

    Kiel forigi blankspacon kun regex - ekzemploj

    Kun la RegExpReplace-funkcio aldonita al via laborlibro, ni traktu malsamajn scenarojn unuope.

    Forigu ĉiujn blankspacojn per regex

    Por forigi ĉiujn spacojn en ĉeno, vi simple serĉu ajnan blankspacsignon, inkluzive de spaco, klapeto, kaleŝoreveno kaj liniofluo, kaj anstataŭigu ilin per malplena ĉeno ("").

    Skemo : \s+

    Anstataŭaĵo : ""

    Suponante, ke la fontĉeno estas en A5, la formulo en B5 estas:

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

    Por faciligi administri viajn ŝablonojn. , vi povas enigi la regex en antaŭdifinita ĉelo kaj provizi ĝin al la formulo uzante absolutan referencon kiel $A$2, do la ĉela adreso restos senŝanĝa dum kopiado de la formulo laŭ la kolumno.

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

    Forigi pli ol unu blankspacon

    Por forigi kroman blankspacon (t.e. pli ol n unu sinsekvaj spacoj), uzu la saman regexn \s+ sed anstataŭigu la trovitajn kongruojn per unuopa spaca signo.

    Skemo : \s+

    Anstataŭaĵo : " "

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

    Bonvolu atenti, ke ĉi tiu formulo konservas unu spacan signon ne nur intersub datumaro, supozu, ke vi volas tranĉi ĉiujn antaŭajn/malantaŭajn spacojn kaj ĉiujn krom unu interspacojn, konservante plurajn liniojn nerompitaj. Por plenumi la taskon, vi bezonos du malsamajn RegExpReplace-funkciojn.

    La unua funkcio anstataŭigas plurajn spacojn per unuopa spaca signo.

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

    La alia forigas spacojn. de la komenco kaj fino de linio:

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

    Nur nestu la du funkciojn unu en la alian:

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

    Kaj vi ricevos perfekta rezulto:

    Regex por anstataŭigi plurajn spacojn per unu signo

    En la okazo ke vi volas forigi ĉiujn spacojn de ĉeno kaj anstataŭigi ĉiun grupon de sinsekvaj spacoj kun specifa signo, jen kion vi devas fari:

    Unue, uzu ĉi tiun regex por tranĉi antaŭajn kaj postajn blankspacojn:

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

    Tiam, servu la supran funkcion al la argumento text de alia RegExpReplace kiu anstataŭigas unu aŭ plurajn sinsekvajn blankspacojn per la signo kiun vi specifita, ekz. streketo:

    Skemo : \s+

    Anstataŭaĵo : -

    Supozinte, ke la fontĉeno estas en A8, la formulo prenas ĉi tiun formon:

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

    Aŭ vi povas enigi la ŝablonojn kaj anstataŭaĵojn en apartaj ĉeloj kiel montrite en la ekrankopio:

    Regex forigi malplenajn liniojn

    Jen demando, kiun uzantoj, kiuj havas plurajn liniojn en unu ĉelo, ofte demandas: "Estas multaj malplenaj linioj en miaj ĉeloj. Ĉu ekzistas ia maniero akiriforigi ilin krom trairi ĉiun ĉelon kaj forigi ĉiun linion permane?" La respondo: Tio estas facila!

    Por egali malplenajn liniojn kiuj ne havas eĉ unu signon de la komenco ^ de la nuna linio ĝis la sekva linio \n, la regex estas:

    Ŝablono : ^\n

    Se viaj videble malplenaj linioj enhavas spacojn aŭ langetojn, uzu ĉi tiun regulan esprimon:

    Ŝablono : ^[\t ]*\n

    Nur anstataŭigu la regex per malplena ĉeno uzante ĉi tiun formulon, kaj ĉiuj malplenaj linioj tuj malaperos!

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

    Forigi blankspacojn per RegEx-Iloj

    La supraj ekzemploj montris nur malgrandan parton de mirindaj eblecoj provizitaj de regeksoj. Bedaŭrinde, ne ĉiuj funkcioj de klasikaj regulaj esprimoj estas disponeblaj en VBA.

    Bonŝance, la RegEx-Iloj inkluzivitaj kun nia Ultimate Suite estas liberaj de ĉi tiuj limigoj ĉar ili estas prilaboritaj de la .NET RegEx-motoro de Mikrosofto. Ĉi tio ebligas al vi konstrui pli kompleksajn ŝablonojn kiuj ne estas subtenataj de VBA RegExp. Belo w vi trovos ekzemplon de tia regula esprimo.

    Regex por forigi spacon inter nombroj

    En alfanombra ĉeno, supozu, ke vi volas forigi blankajn spacojn nur inter nombroj, do ĉeno kiel ekzemple "A 1 2 B" fariĝas "A 12 B".

    Por kongrui blankspacon inter iuj du ciferoj, vi povas uzi la jenajn ĉirkaŭrigardojn:

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

    Por krei formulon bazitansur la supraj regeksoj, jen du facilaj paŝoj por plenumi:

    1. En la langeto Ablebits Data , en la grupo Teksto , alklaku Regex. Iloj .

    2. En la panelo Regex Tools , elektu la fontajn datumojn, enigu vian regex, elektu la Forigi . opcion, kaj premu Forigi .

      Por ricevi la rezultojn kiel formulojn, ne valorojn, memoru meti markon en la markobutonon Enmeti kiel formulon .

    Post momento, vi vidos la funkcion AblebitsRegexRemove enigitan en novan kolumnon dekstre de la originaj datumoj.

    Alternative, vi povas enigi la regex en iu ĉelo. , diru A5, kaj enigu la formulon rekte en ĉelon per la dialogujo Enmeti Funkcion , kie AblebitsRegexRemove estas kategoriigita sub AblebitsUDFs .

    Ĉar ĉi tiu funkcio estas speciale desegnita por forigi ĉenojn, ĝi postulas nur du argumentojn - la eniga ĉeno kaj regex:

    =AblebitsRegexRemove(A5, $A$2)

    Tiel forigi spacojn en Excel uzante regulajn esprimojn. Mi dankas vin pro legado kaj antaŭĝojas vidi vin en nia blogo venontsemajne!

    Haveblaj elŝutoj

    Forigu blankspacon kun regex - ekzemploj (.xlsm-dosiero)

    Ultimate Suite - provversio (.exe dosiero)

    vortoj sed ankaŭ ĉe la komenco kaj fino de ŝnuro, kio ne estas bona. Por forigi la antaŭan kaj malantaŭan blankspacon, nestu la supran formulon en alian RegExpReplace-funkcion, kiu forigas spacojn de la komenco kaj fino:

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

    Regex al forigu kondukan kaj postan blankspacon

    Por serĉi blankspacon ĉe la komenco aŭ fino de linio, uzu la komencajn ^ kaj finajn $-ankrojn.

    Gvidanta blankspacon:

    Ŝablono : ^[\s]+

    Substango blankspaco:

    Ŝablono : [\s ]+$

    Gvidanta kaj malantaŭa blankspaco:

    Ŝablono : ^[\s]+

    Michael Brown estas diligenta teknologia entuziasmulo kun pasio por simpligi kompleksajn procezojn uzante programarajn ilojn. Kun pli ol jardeko da sperto en la teknologia industrio, li perfektigis siajn kapablojn en Microsoft Excel kaj Outlook, same kiel Google Sheets kaj Docs. La blogo de Mikaelo estas dediĉita al kunhavigi siajn sciojn kaj kompetentecon kun aliaj, provizante facilajn sekvajn konsiletojn kaj lernilojn por plibonigi produktivecon kaj efikecon. Ĉu vi estas sperta profesiulo aŭ komencanto, la blogo de Mikaelo ofertas valorajn komprenojn kaj praktikajn konsilojn por eltiri la plej multajn el ĉi tiuj esencaj programaj iloj.