Elimineu els espais en blanc i les línies buides a Excel mitjançant Regex

  • Comparteix Això
Michael Brown

Voleu gestionar els espais en blanc de la manera més eficaç? Utilitzeu expressions regulars per eliminar tots els espais d'una cel·la, substituir diversos espais per un sol caràcter, retallar espais només entre números i molt més.

Sigui quina siguin les dades d'entrada que utilitzeu, difícilment trobareu un conjunt de dades sense espais. En la majoria dels casos, l'espai en blanc és bo: l'utilitzeu per separar visualment diferents peces d'informació per facilitar-ne la percepció. En algunes situacions, però, pot arribar a ser dolent: els espais addicionals poden desordenar les fórmules i fer que els vostres fulls de treball siguin gairebé inmanejables.

    Per què utilitzar l'expressió regular per retallar els espais en blanc a Excel?

    Abans d'aprofundir en el fons d'utilitzar expressions regulars per eliminar els espais en blanc dels fulls de treball d'Excel, m'agradaria abordar la pregunta que em ve al cap en primer lloc: per què necessitem expressions regulars quan Excel ja té el TRIM funció?

    Per entendre la diferència, vegem què es considera espai en blanc en cada cas:

    • La funció TRIM integrada només pot eliminar el caràcter espai que té el valor 32 al sistema ASCII de 7 bits.
    • Les expressions regulars poden identificar algunes formes diferents d'espai en blanc, com ara l'espai ( ), la tabulació (\t), el retorn de carro (\r) i el nou. línia (\n). A més, hi ha el caràcter d'espai en blanc (\s) que coincideix amb tots aquests tipus i és molt útil per netejar l'entrada en brut.dades.

    Sabent exactament què passa entre bastidors, és molt més fàcil trobar una solució, oi?

    Com habilitar expressions regulars a Excel

    És un fet ben conegut que l'Excel de manera immediata no admet expressions regulars. Per activar-los, heu de crear una funció VBA personalitzada. Per sort, ja en tenim un, anomenat RegExpReplace . Espera, per què "substituir" mentre estem parlant d'eliminar? En el llenguatge d'Excel, "eliminar" és només una paraula més per a "substituir per una cadena buida" :)

    Per afegir la funció al vostre Excel, només cal que copieu el seu codi d'aquesta pàgina, enganxeu-lo a l'editor VBA , i deseu el vostre fitxer com a llibre de treball habilitat per a macros (.xlsm).

    Aquí teniu la sintaxi de la funció per a la vostra referència:

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

    Els tres primers arguments són obligatoris, els dos últims són opcionals.

    On:

    • Text : la cadena original a cerca.
    • Patró : l'expressió regular que cal cercar.
    • Reemplaçament : el text amb el qual cal substituir. Per eliminar espais en blanc , establiríeu aquest argument com a:
      • cadena buida ("") per retallar absolutament tots els espais
      • espai caràcter (" ") per substituir diversos espais per un únic caràcter d'espai
    • Núm_instància (opcional) - el número de la instància. En la majoria dels casos, l'ometeu per substituir totes les instàncies(per defecte).
    • Match_case (opcional): un valor booleà que indica si s'ha de fer coincidir (VERTADER) o ignorar (FALSE). Per als espais en blanc, és irrellevant i, per tant, s'omet.

    Per obtenir més informació, vegeu la funció RegExpReplace.

    Com eliminar els espais en blanc amb regex - exemples

    Amb el La funció RegExpReplace s'ha afegit al vostre llibre de treball, abordem diferents escenaris d'un en un.

    Elimineu tots els espais en blanc amb regex

    Per eliminar tots els espais d'una cadena, només cal que cerqueu qualsevol caràcter d'espai en blanc, inclòs un espai, una tabulació, un retorn de carro i un avanç de línia i substituïu-los per una cadena buida ("").

    Patró : \s+

    Substitució : ""

    Suposant que la cadena d'origen és a A5, la fórmula a B5 és:

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

    Per facilitar la gestió dels vostres patrons , podeu introduir l'expressió regular en una cel·la predefinida i proporcionar-la a la fórmula mitjançant una referència absoluta com $A$2, de manera que l'adreça de la cel·la romandrà sense canvis quan copieu la fórmula a la columna.

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

    Elimina més d'un espai en blanc

    Per eliminar espai en blanc addicional (és a dir, més n espais consecutius), utilitzeu la mateixa expressió regular \s+ però substituïu les coincidències trobades per un únic caràcter d'espai.

    Patró : \s+

    Substitució : " "

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

    Si us plau, tingueu en compte que aquesta fórmula manté un espai no només entrea sota del conjunt de dades, suposem que voleu retallar tots els espais inicials/finals i tots els espais intermedis menys un, mantenint intactes diverses línies. Per complir la tasca, necessitareu dues funcions RegExpReplace diferents.

    La primera funció substitueix diversos espais per un sol caràcter d'espai.

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

    L'altra elimina espais. des de l'inici i el final d'una línia:

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

    Simplement niu les dues funcions l'una a l'altra:

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

    I obtindreu un resultat perfecte:

    Regex per substituir diversos espais amb un caràcter

    En cas que vulgueu eliminar tots els espais d'una cadena i substituir cada grup d'espais consecutius amb un caràcter específic, això és el que heu de fer:

    Primer, utilitzeu aquesta expressió regular per retallar els espais en blanc inicials i finals:

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

    A continuació, feu servir la funció anterior a l'argument text d'un altre RegExpReplace que substitueix un o més espais en blanc consecutius amb el caràcter que especifiqueu, p. un guionet:

    Patró : \s+

    Substitució : -

    Suposant que la cadena d'origen és a A8, la fórmula pren aquesta forma:

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

    O podeu introduir els patrons i les substitucions en cel·les separades com es mostra a la captura de pantalla:

    Regex per eliminar línies buides

    Aquí hi ha una pregunta que fan sovint els usuaris que tenen diverses línies en una cel·la: "Hi ha moltes línies en blanc a les meves cel·les. Hi ha alguna manera d'obtenirdesfer-se'n a part de passar per cada cel·la i suprimir cada línia manualment?" La resposta: Això és fàcil!

    Per fer coincidir línies buides que no tenen un sol caràcter des de l'inici ^ de la línia actual fins a la línia següent \n, l'expressió regular és:

    Patró : ^\n

    Si les línies en blanc visualment contenen espais o tabulacions, utilitzeu aquesta expressió regular:

    Patró : ^[\t ]*\n

    Només substituïu l'expressió regular per una cadena buida amb aquesta fórmula, i totes les línies en blanc desapareixeran alhora!

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

    Eliminació d'espais en blanc amb eines RegEx

    Els exemples anteriors han demostrat només una petita part de les meravelloses possibilitats que ofereixen les execucions regulars. Malauradament, no tots Les característiques de les expressions regulars clàssiques estan disponibles a VBA.

    Afortunadament, les eines RegEx incloses amb la nostra Suite Ultimate estan lliures d'aquestes limitacions, ja que són processades pel motor .NET RegEx de Microsoft. Això us permet construir patrons més sofisticats que no són compatibles amb VBA RegExp. Belo w trobareu un exemple d'aquesta expressió regular.

    Regex per eliminar l'espai entre números

    En una cadena alfanumèrica, suposem que voleu eliminar els espais en blanc només entre els números, de manera que una cadena com ara "A 1 2 B" es converteix en "A 12 B".

    Per fer coincidir un espai en blanc entre dos dígits qualssevol, podeu utilitzar els següents aspectes:

    Patró : (?<=\d)\s+(?=\d)

    Per crear una fórmula basadaa les execucions regulars anteriors, aquí teniu dos passos fàcils de fer:

    1. A la pestanya Dades d'Ablebits , al grup Text , feu clic a Execució regular. Eines .

    2. A la subfinestra Eines d'expressió regular , seleccioneu les dades d'origen, introduïu la vostra expressió regular i trieu Elimina i premeu Elimina .

      Per obtenir els resultats com a fórmules, no com a valors, recordeu de marcar la casella de selecció Insereix com a fórmula .

    En un moment, veureu la funció AblebitsRegexRemove inserida en una nova columna a la dreta de les dades originals.

    Com a alternativa, podeu introduir l'expressió regular en alguna cel·la , diguem A5 i inseriu la fórmula directament a una cel·la mitjançant el quadre de diàleg Insereix funció , on AblebitsRegexRemove es classifica a AblebitsUDFs .

    Com que aquesta funció està especialment dissenyada per eliminar cadenes, només requereix dos arguments: la cadena d'entrada i l'expressió regular:

    =AblebitsRegexRemove(A5, $A$2)

    Així és com eliminar espais a Excel utilitzant expressions regulars. Us agraeixo la lectura i espero veure-us al nostre bloc la setmana vinent!

    Descàrregues disponibles

    Elimineu espais en blanc amb expresions regulars - exemples (fitxer .xlsm)

    Ultimate Suite - versió de prova (fitxer .exe)

    paraules però també al principi i al final d'una cadena, que no és bo. Per desfer-se dels espais en blanc inicial i final, niu la fórmula anterior en una altra funció RegExpReplace que elimina els espais del principi i del final:

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

    Regex a elimina els espais en blanc inicials i posteriors

    Per cercar espais en blanc al principi o al final d'una línia, utilitzeu les àncores $ inicial ^ i final.

    Espai en blanc inicial :

    Patró : ^[\s]+

    Espai en blanc al final:

    Patró : [\s ]+$

    Espai en blanc inicial i final :

    Patró : ^[\s]+

    Michael Brown és un entusiasta de la tecnologia dedicat amb una passió per simplificar processos complexos mitjançant eines de programari. Amb més d'una dècada d'experiència en la indústria tecnològica, ha perfeccionat les seves habilitats en Microsoft Excel i Outlook, així com en Google Sheets i Docs. El bloc de Michael es dedica a compartir els seus coneixements i experiència amb altres persones, oferint consells i tutorials fàcils de seguir per millorar la productivitat i l'eficiència. Tant si sou un professional experimentat com si sou un principiant, el bloc de Michael ofereix valuoses idees i consells pràctics per treure el màxim profit d'aquestes eines de programari essencials.