Eliminarea spațiilor albe și a liniilor goale în Excel folosind Regex

  • Imparte Asta
Michael Brown

Utilizați expresii regulate pentru a elimina toate spațiile dintr-o celulă, pentru a înlocui mai multe spații cu un singur caracter, pentru a tăia doar spațiile dintre numere și multe altele.

Indiferent de datele de intrare pe care le folosiți, cu greu veți întâlni un set de date fără spații. În majoritatea cazurilor, spațiile albe sunt bune - le folosiți pentru a separa vizual diferite informații, pentru a le face mai ușor de perceput. În unele situații, însă, pot deveni malefice - spațiile suplimentare vă pot încurca formulele și vă pot face foile de lucru aproape imposibil de gestionat.

    De ce să folosiți expresia regulată pentru a tăia spațiile albe în Excel?

    Înainte de a intra în detaliile legate de utilizarea expresiilor regulate pentru a elimina spațiile albe din foile de lucru Excel, aș dori să abordez întrebarea care îmi vine în minte în primul rând - de ce avem nevoie de regexuri când Excel are deja funcția TRIM?

    Pentru a înțelege diferența, să vedem ce este considerat spațiu alb în fiecare caz:

    • Funcția TRIM încorporată poate elimina doar caracter de spațiu care are valoarea 32 în sistemul ASCII pe 7 biți.
    • Expresiile regulate pot identifica câteva forme diferite de spații albe, cum ar fi spațiul ( ), tab-ul (\t), revenirea la cărămidă (\r) și linia nouă (\n). În plus, există și caracter de spațiu alb (\s) care se potrivește cu toate aceste tipuri și care este extrem de util pentru curățarea datelor brute de intrare.

    Știind exact ce se întâmplă în spatele scenei, este mult mai ușor să găsești o soluție, nu-i așa?

    Cum să activați expresiile regulate în Excel

    Este un fapt bine cunoscut faptul că Excel gata de utilizare nu acceptă expresiile regulate. Pentru a le activa, trebuie să creați o funcție VBA personalizată. Din fericire, avem deja una, numită RegExpReplace Stai, de ce "înlocuiți" când vorbim despre eliminare? În limbajul Excel, "eliminați" este doar un alt cuvânt pentru "înlocuiți cu un șir gol" :)

    Pentru a adăuga funcția în Excel, trebuie doar să copiați codul de pe această pagină, să îl lipiți în editorul VBA și să salvați fișierul ca fiind un fișier registru de lucru activat de macro (.xlsm).

    Iată sintaxa funcției pentru referință:

    RegExpReplace(text, pattern, replacement, [instance_num], [match_case])

    Primele trei argumente sunt obligatorii, iar ultimele două sunt opționale.

    Unde:

    • Text - șirul original în care se caută.
    • Model - regex-ul care trebuie căutat.
    • Înlocuire - textul cu care se înlocuiește. To eliminați spații albe , ați seta acest argument la oricare dintre următoarele valori:
      • șir gol (""") pentru a tăia absolut toate spațiile
      • spațiu caracter (" ") pentru a înlocui mai multe spații cu un singur caracter spațiu
    • Număr_instanță (opțional) - numărul instanței. În majoritatea cazurilor, îl veți omite pentru a înlocui toate instanțele (implicit).
    • Cazul_de_corespondență (opțional) - o valoare booleană care indică dacă trebuie să se potrivească (TRUE) sau să ignore (FALSE) cazul textului. Pentru spațiile albe, este irelevantă și, prin urmare, este omisă.

    Pentru mai multe informații, consultați funcția RegExpReplace.

    Cum să eliminați spațiile albe cu regex - exemple

    Odată ce funcția RegExpReplace a fost adăugată în registrul de lucru, să abordăm diferite scenarii, unul câte unul.

    Îndepărtați toate spațiile albe folosind regex

    Pentru a elimina toate spațiile dintr-un șir de caractere, trebuie pur și simplu să căutați orice caracter de spațiu alb, inclusiv un spațiu, o tabulație, o revenire la cărucior și un salt de linie, și să le înlocuiți cu un șir de caractere gol ("").

    Model : \s+

    Înlocuire : ""

    Presupunând că șirul sursă se află în A5, formula din B5 este:

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

    Pentru a facilita gestionarea modelelor, puteți introduce regex-ul într-o celulă predefinită și îl puteți furniza formulei folosind o referință absolută, cum ar fi $A$2, astfel încât adresa celulei să rămână neschimbată atunci când copiați formula în josul coloanei.

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

    Îndepărtați mai multe spații albe

    Pentru a elimina spații albe suplimentare (adică mai mult de un spațiu consecutiv), utilizați aceeași regex \s+, dar înlocuiți corespondențele găsite cu un singur caracter spațiu.

    Model : \s+

    Înlocuire : " "

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

    Vă rugăm să fiți atenți la faptul că această formulă păstrează un caracter de spațiu nu numai între cuvinte, ci și la începutul și la sfârșitul unui șir de caractere, ceea ce nu este bine. Pentru a scăpa de spațiile albe de la început și de la sfârșit, combinați formula de mai sus într-o altă funcție RegExpReplace care elimină spațiile de la început și de la sfârșit:

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

    Regex pentru a elimina spațiile albe de început și de sfârșit

    Pentru a căuta spații albe la începutul sau la sfârșitul unei linii, utilizați ancorele de început ^ și de sfârșit $.

    În frunte cu spații albe:

    Model : ^[\s]+

    Trailing spații albe:

    Model : [\s]+$

    În frunte cu și la urmă spații albe:

    Model : ^[\s]+

    Oricare ar fi regex-ul ales, înlocuiți corespondențele cu nimic.

    Înlocuire : ""

    De exemplu, pentru a elimina toate spațiile de la începutul și de la sfârșitul unui șir de caractere din A5, formula este:

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

    După cum se arată în captura de ecran de mai jos, acest lucru elimină doar spațiile albe din față și din spate. Spațiile dintre cuvinte rămân intacte, creând o imagine plăcută pentru ochiul cititorului.

    Eliminați spațiile albe suplimentare, dar păstrați pauzele de linie

    Atunci când lucrați cu șiruri de mai multe rânduri, este posibil să doriți să scăpați de spațiile suplimentare, dar să păstrați pauzele de linie. Pentru a face acest lucru, în loc de caracterul de spațiu alb \s, căutați spații [ ] sau spații și tabulări [\t ]. Acest din urmă model este util atunci când datele sursă sunt importate dintr-o altă sursă, de exemplu, un editor de text.

    În setul de date de mai jos, să presupunem că doriți să tăiați toate spațiile de început și sfârșit și toate spațiile dintre ele, cu excepția unuia, păstrând intacte mai multe linii. Pentru a îndeplini această sarcină, veți avea nevoie de două funcții RegExpReplace diferite.

    Prima funcție înlocuiește mai multe spații cu un singur caracter spațiu.

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

    Celălalt elimină spațiile de la începutul și sfârșitul unei linii:

    =RegExpReplace(A5, "^ +

    Trebuie doar să înglobați cele două funcții una în alta:

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

    Și veți obține un rezultat perfect:

    Regex pentru a înlocui mai multe spații cu un singur caracter

    În cazul în care doriți să eliminați toate spațiile dintr-un șir de caractere și să înlocuiți fiecare grup de spații consecutive cu un anumit caracter, procedați astfel:

    În primul rând, utilizați acest regex pentru a tăia spațiile albe de început și de sfârșit:

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

    Apoi, serviți funcția de mai sus la text argument al unui alt RegExpReplace care înlocuiește unul sau mai multe spații albe consecutive cu caracterul specificat de dumneavoastră, de exemplu o cratimă:

    Model : \s+

    Înlocuire : -

    Presupunând că șirul sursă se află în A8, formula are următoarea formă:

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

    Sau puteți introduce modelele și înlocuirile în celule separate, așa cum se arată în captura de ecran:

    Regex pentru a elimina liniile goale

    Iată o întrebare pe care utilizatorii care au mai multe linii într-o celulă o pun frecvent: "Există o mulțime de linii goale în celulele mele. Există vreo altă modalitate de a scăpa de ele decât să trec prin fiecare celulă și să șterg manual fiecare linie?" Răspunsul: Este ușor!

    Pentru a se potrivi cu liniile goale care nu au niciun caracter de la începutul ^ liniei curente până la următoarea linie \n, regexul este:

    Model : ^\n

    Dacă liniile goale vizual conțin spații sau tabulări, utilizați această expresie regulată:

    Model : ^[\t ]*\n

    Înlocuiți regex-ul cu un șir gol folosind această formulă și toate liniile goale vor dispărea imediat!

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

    Îndepărtarea spațiilor albe cu instrumentele RegEx

    Exemplele de mai sus au demonstrat doar o mică parte din minunatele posibilități oferite de regexuri. Din păcate, nu toate caracteristicile expresiilor regulate clasice sunt disponibile în VBA.

    Din fericire, instrumentele RegEx incluse în suita noastră Ultimate Suite sunt libere de aceste limitări, deoarece sunt procesate de motorul Microsoft .NET RegEx. Acest lucru vă permite să construiți modele mai sofisticate care nu sunt acceptate de VBA RegExp. Mai jos veți găsi un exemplu de expresie regulată de acest tip.

    Regex pentru a elimina spațiul dintre numere

    Într-un șir alfanumeric, să presupunem că doriți să eliminați spațiile albe numai între numere, astfel încât un șir de tipul "A 1 2 B" să devină "A 12 B".

    Pentru a potrivi un spațiu între două cifre, puteți utiliza următoarele variante de căutare:

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

    Pentru a crea o formulă bazată pe regexurile de mai sus, iată doi pași simpli de urmat:

    1. Pe Date Ablebits în fila Text grup, faceți clic pe Instrumente Regex .

    2. Pe Instrumente Regex selectați datele sursă, introduceți regexul, alegeți opțiunea Eliminați și apăsați Eliminați .

      Pentru a obține rezultatele sub formă de formule, nu de valori, nu uitați să puneți o bifă în câmpul Introduceți ca o formulă caseta de selectare.

    Într-o clipă, veți vedea AblebitsRegexRemove introdusă într-o nouă coloană în dreapta datelor originale.

    Alternativ, puteți introduce regex-ul într-o celulă, de exemplu A5, și să inserați formula direct într-o celulă folosind funcția Funcția de inserție caseta de dialog, unde AblebitsRegexRemove este clasificat în categoria AblebitsUDFs .

    Deoarece această funcție este special concepută pentru eliminarea șirurilor de caractere, are nevoie doar de două argumente - șirul de intrare și regex:

    =AblebitsRegexRemove(A5, $A$2)

    Iată cum se elimină spațiile în Excel folosind expresii regulate. Vă mulțumesc pentru lectură și vă aștept pe blog săptămâna viitoare!

    Descărcări disponibile

    Eliminarea spațiilor albe cu regex - exemple (fișier .xlsm)

    Ultimate Suite - versiunea de încercare (fișier .exe)

    Michael Brown este un pasionat de tehnologie dedicat, cu o pasiune pentru simplificarea proceselor complexe folosind instrumente software. Cu mai mult de un deceniu de experiență în industria tehnologiei, el și-a perfecționat abilitățile în Microsoft Excel și Outlook, precum și în Google Sheets și Docs. Blogul lui Michael este dedicat împărtășirii cunoștințelor și experienței sale cu alții, oferind sfaturi și tutoriale ușor de urmat pentru îmbunătățirea productivității și eficienței. Indiferent dacă sunteți un profesionist experimentat sau un începător, blogul lui Michael oferă informații valoroase și sfaturi practice pentru a profita la maximum de aceste instrumente software esențiale.