Elimina espazos en branco e liñas baleiras en Excel usando Regex

  • Comparte Isto
Michael Brown

Desexa xestionar os espazos en branco da forma máis eficaz? Use expresións regulares para eliminar todos os espazos dunha cela, substituír varios espazos por un só carácter, recortar espazos só entre números e moito máis.

Son cal sexan os datos de entrada que estea a usar, dificilmente atopará un conxunto de datos sen espazos. Na maioría dos casos, os espazos en branco son bos: utilízao para separar visualmente diferentes pezas de información para que sexa máis fácil de percibir. Nalgunhas situacións, con todo, pode chegar a ser malo: os espazos adicionais poden estropear as túas fórmulas e facer que as túas follas de traballo sexan case inmanexables.

    Por que usar a expresión regular para recortar espazos en branco en Excel?

    Antes de mergullarnos na esencia do uso de expresións regulares para eliminar espazos en branco nas follas de cálculo de Excel, gustaríame abordar a pregunta que se me ocorre en primeiro lugar: por que necesitamos expresións regulares cando Excel xa ten o TRIM función?

    Para comprender a diferenza, vexamos o que se considera espazo en branco en cada caso:

    • A función TRIM integrada só pode eliminar o carácter espazo que ten o valor 32 no sistema ASCII de 7 bits.
    • As expresións regulares poden identificar algunhas formas diferentes de espazos en branco como o espazo ( ), o tabulador (\t), o retorno de carro (\r) e o novo liña (\n). Ademais, hai o carácter de espazo en branco (\s) que coincide con todos estes tipos e é moi útil para limpar a entrada en brutodatos.

    Sabendo exactamente o que ocorre detrás das escenas, é moito máis fácil atopar unha solución, non?

    Como habilitar expresións regulares en Excel

    É un feito ben coñecido que Excel listo para usar non admite expresións regulares. Para activalos, cómpre crear unha función VBA personalizada. Por sorte, xa temos un, chamado RegExpReplace . Agarda, por que "substituír" mentres falamos de eliminar? No idioma de Excel, "eliminar" é só outra palabra para "substituír cunha cadea baleira" :)

    Para engadir a función ao teu Excel, só tes que copiar o seu código desta páxina, pégalo no editor de VBA , e garda o teu ficheiro como caderno de traballo habilitado para macros (.xlsm).

    Aquí está a sintaxe da función para a túa referencia:

    RegExpReplace(texto, patrón, substitución, [núm_instancia] , [match_case])

    Os tres primeiros argumentos son obrigatorios, os dous últimos son opcionais.

    Onde:

    • Texto - a cadea orixinal para buscar.
    • Patrón : a expresión regular que se quere buscar.
    • Substitución : o texto co que se quere substituír. Para eliminar espazos en branco , establecería este argumento como:
      • cadea baleira ("") para recortar absolutamente todos os espazos
      • espazo carácter (" ") para substituír varios espazos por un único espazo
    • Número_instancia (opcional) - o número de instancia. Na maioría dos casos, omitirás para substituír todas as instancias(predeterminado).
    • Match_case (opcional): un valor booleano que indica se hai que coincidir (VERDADEIRO) ou ignorar (FALSO). Para os espazos en branco, é irrelevante e, polo tanto, omítese.

    Para obter máis información, consulte a función RegExpReplace.

    Como eliminar espazos en branco con expresións regulares - exemplos

    Coa opción A función RegExpReplace engadida ao teu libro de traballo, abordemos diferentes escenarios un a un.

    Elimina todos os espazos en branco usando regex

    Para eliminar todos os espazos dunha cadea, só tes que buscar calquera carácter de espazo en branco, incluído un espazo, unha tabulación, un retorno de carro e un avance de liña e substitúeos por unha cadea baleira ("").

    Patrón : \s+

    Substitución : ""

    Asumindo que a cadea de orixe está en A5, a fórmula en B5 é:

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

    Para facilitar a xestión dos seus patróns , pode introducir a expresión regular nunha cela predefinida e proporcionala á fórmula usando unha referencia absoluta como $A$2, polo que o enderezo da cela permanecerá sen cambios ao copiar a fórmula na columna.

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

    Eliminar máis dun espazo en branco

    Para eliminar espazo en branco extra (é dicir, máis n un espazo consecutivo), use a mesma expresión regular \s+ pero substitúa as coincidencias atopadas cun único espazo.

    Patrón : \s+

    Substitución : " "

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

    Por favor, preste atención a que esta fórmula mantén un carácter de espazo non só entredebaixo do conxunto de datos, supoña que quere recortar todos os espazos iniciais/finales e todos os espazos intermedios menos un, mantendo varias liñas intactas. Para realizar a tarefa, necesitará dúas funcións RegExpReplace diferentes.

    A primeira función substitúe varios espazos cun único espazo.

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

    A outra elimina espazos. desde o principio e o final dunha liña:

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

    Só anidan as dúas funcións unha noutra:

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

    E obterás un resultado perfecto:

    Regex para substituír varios espazos cun carácter

    No caso de querer eliminar todos os espazos dunha cadea e substituír cada grupo de espazos consecutivos cun carácter específico, isto é o que debes facer:

    Primeiro, usa esta expresión regular para recortar os espazos en branco ao principio e ao final:

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

    Entón, fai a función anterior ao argumento texto doutro RegExpReplace que substitúe un ou máis espazos en branco consecutivos co carácter que especifique, p. ex. un guión:

    Patrón : \s+

    Substitución : -

    Supoñendo que a cadea de orixe está en A8, a fórmula toma esta forma:

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

    Ou pode introducir os patróns e as substitucións en celas separadas como se mostra na captura de pantalla:

    Regex para eliminar liñas baleiras

    Aquí tes unha pregunta que os usuarios que teñen varias liñas nunha cela fan con frecuencia: "Hai moitas liñas en branco nas miñas celas. Hai algún xeito de obterdesfacerse deles ademais de percorrer cada cela e eliminar cada liña manualmente?" A resposta: ¡É doado!

    Para facer coincidir liñas baleiras que non teñan un só carácter desde o inicio ^ da liña actual ata o seguinte liña \n, a expresión regular é:

    Patrón : ^\n

    Se as liñas en branco visualmente conteñen espazos ou tabulacións, use esta expresión regular:

    Patrón : ^[\t ]*\n

    Só só substitúe a expresión regular por unha cadea baleira usando esta fórmula, e todas as liñas en branco desaparecerán á vez!

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

    Eliminar espazos en branco coas ferramentas RegEx

    Os exemplos anteriores demostraron só unha pequena parte das marabillosas posibilidades que ofrecen as regex. Desafortunadamente, non todos as funcións das expresións regulares clásicas están dispoñibles en VBA.

    Por sorte, as ferramentas RegEx incluídas coa nosa Ultimate Suite están libres destas limitacións xa que son procesadas polo motor .NET RegEx de Microsoft. Isto permíteche construír patróns máis sofisticados que non son compatibles con VBA RegExp. Belo w atoparás un exemplo desta expresión regular.

    Rex para eliminar espazos entre números

    Nunha cadea alfanumérica, supoña que queres eliminar só espazos en branco entre números, polo que unha cadea como "A 1 2 B" convértese en "A 12 B".

    Para facer coincidir un espazo en branco entre dous díxitos calquera, podes usar a seguinte vista:

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

    Para crear unha fórmula baseadanas expresións regulares anteriores, aquí tes dous pasos sinxelos para realizar:

    1. Na pestana Datos de Ablebits , no grupo Texto , fai clic en Rexex. Ferramentas .

    2. No panel Ferramentas regex , seleccione os datos de orixe, introduza a súa expresión regular, escolla Eliminar opción e prema Eliminar .

      Para obter os resultados como fórmulas, non como valores, lembre de marcar a caixa de verificación Inserir como fórmula .

    Ningún momento, verás a función AblebitsRegexRemove inserida nunha nova columna á dereita dos datos orixinais.

    Como alternativa, podes introducir a expresión regular nalgunha cela. , digamos A5 e insira a fórmula directamente nunha cela mediante o cadro de diálogo Inserir función , onde AblebitsRegexRemove se clasifica en AblebitsUDFs .

    Como esta función está deseñada especialmente para eliminar cadeas, só require dous argumentos: a cadea de entrada e a expresión regular:

    =AblebitsRegexRemove(A5, $A$2)

    Así é como eliminar espazos en Excel usando expresións regulares. Grazas por ler e espero verte no noso blog a vindeira semana!

    Descargas dispoñibles

    Eliminar espazos en branco con expresións rex. - exemplos (ficheiro .xlsm)

    Ultimate Suite - versión de proba (ficheiro .exe)

    palabras pero tamén ao principio e ao final dunha cadea, o que non é bo. Para desfacerse dos espazos en branco inicial e final, aniña a fórmula anterior noutra función RegExpReplace que elimina os espazos do principio e do final:

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

    Regex para eliminar os espazos en branco inicial e final

    Para buscar espazos en branco ao principio ou ao final dunha liña, use as áncoras de inicio ^ e finais de $.

    Espazo en branco inicial :

    Patrón : ^[\s]+

    Espazo en branco ao final:

    Patrón : [\s ]+$

    Espazo en branco ao principio e ao final :

    Patrón : ^[\s]+

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.