Eliminar espacios en blanco y líneas vacías en Excel usando Regex

  • Compartir Este
Michael Brown

Utilice expresiones regulares para eliminar todos los espacios de una celda, sustituir varios espacios por un solo carácter, recortar espacios sólo entre números y mucho más.

Independientemente de los datos de entrada que utilice, difícilmente encontrará un conjunto de datos sin espacios. En la mayoría de los casos, los espacios en blanco son buenos: se utilizan para separar visualmente distintos elementos de información y facilitar su percepción. En algunas situaciones, sin embargo, pueden llegar a ser malignos: los espacios adicionales pueden desordenar sus fórmulas y hacer que sus hojas de cálculo sean casi inmanejables.

    ¿Por qué utilizar expresiones regulares para recortar espacios en blanco en Excel?

    Antes de sumergirnos en el meollo del uso de expresiones regulares para eliminar espacios en blanco en las hojas de cálculo de Excel, me gustaría abordar la pregunta que viene a la mente en primer lugar - ¿por qué necesitamos expresiones regulares cuando Excel ya tiene la función TRIM?

    Para entender la diferencia, veamos qué se considera espacio en blanco en cada caso:

    • La función TRIM incorporada sólo puede eliminar el carácter espacial que tiene valor 32 en el sistema ASCII de 7 bits.
    • Las expresiones regulares pueden identificar algunas formas diferentes de espacios en blanco, como el espacio ( ), el tabulador (\t), el retorno de carro (\r) y la nueva línea (\n). Además, existe la función carácter de espacio en blanco (\s) que coincide con todos estos tipos y resulta extremadamente útil para limpiar los datos de entrada sin procesar.

    Sabiendo exactamente lo que ocurre entre bastidores, es mucho más fácil encontrar una solución, ¿verdad?

    Cómo activar expresiones regulares en Excel

    Es un hecho bien conocido que Excel no soporta expresiones regulares. Para activarlas, es necesario crear una función VBA personalizada. Por suerte, ya tenemos una, llamada RegExpReplace Espera, ¿por qué "sustituir" cuando estamos hablando de eliminar? En el lenguaje Excel, "eliminar" no es más que otra palabra para "sustituir por una cadena vacía" :)

    Para añadir la función a su Excel, simplemente copie su código de esta página, péguelo en el editor VBA y guarde su archivo como archivo libro de trabajo habilitado para macros (.xlsm).

    Aquí está la sintaxis de la función para su referencia:

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

    Los tres primeros argumentos son obligatorios, los dos últimos son opcionales.

    Dónde:

    • Texto - la cadena original en la que buscar.
    • Patrón - la expresión regular a buscar.
    • Sustitución - el texto por el que se va a sustituir. A eliminar espacios en blanco , debes establecer este argumento en cualquiera de los dos:
      • cadena vacía ("") para recortar absolutamente todos los espacios
      • espacio carácter (" ") para sustituir varios espacios por un único carácter de espacio
    • Número_de_instancia (opcional) - el número de instancia. En la mayoría de los casos, lo omitirá para reemplazar todas las instancias (por defecto).
    • Caso_partido (opcional) - un valor booleano que indica si debe coincidir (TRUE) o ignorar (FALSE) las mayúsculas y minúsculas del texto. Para los espacios en blanco, es irrelevante y, por tanto, se omite.

    Para más información, consulte la función RegExpReplace.

    Cómo eliminar espacios en blanco con regex - ejemplos

    Con la función RegExpReplace añadida a tu libro de trabajo, vamos a abordar diferentes escenarios de uno en uno.

    Eliminar todos los espacios en blanco mediante regex

    Para eliminar todos los espacios de una cadena, basta con buscar cualquier carácter de espacio en blanco, incluidos un espacio, un tabulador, un retorno de carro y un salto de línea, y sustituirlos por una cadena vacía ("").

    Patrón : \s+

    Sustitución : ""

    Suponiendo que la cadena de origen está en A5, la fórmula en B5 es:

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

    Para facilitar la gestión de los patrones, puede introducir la expresión regular en una celda predefinida y suministrarla a la fórmula utilizando una referencia absoluta como $A$2, de modo que la dirección de la celda no se modifique al copiar la fórmula en la columna.

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

    Eliminar más de un espacio en blanco

    Para eliminar espacios en blanco adicionales (es decir, más de un espacio consecutivo), utilice la misma regex \s+ pero sustituya las coincidencias encontradas por un único carácter de espacio.

    Patrón : \s+

    Sustitución : " "

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

    Tenga en cuenta que esta fórmula mantiene un carácter de espacio no sólo entre palabras, sino también al principio y al final de una cadena, lo que no es bueno. Para eliminar los espacios en blanco iniciales y finales, anide la fórmula anterior en otra función RegExpReplace que elimine los espacios del principio y del final:

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

    Regex para eliminar los espacios en blanco iniciales y finales

    Para buscar espacios en blanco al principio o al final de una línea, utilice las anclas de inicio ^ y de fin $.

    Dirigir espacios en blanco:

    Patrón : ^[\s]+

    Seguimiento espacios en blanco:

    Patrón : [\s]+$

    Dirigir y siguiendo espacios en blanco:

    Patrón : ^[\s]+

    Sea cual sea la expresión regular que elija, sustituya las coincidencias por nada.

    Sustitución : ""

    Por ejemplo, para eliminar todos los espacios al principio y al final de una cadena en A5, la fórmula es:

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

    Como se muestra en la siguiente captura de pantalla, esto sólo elimina los espacios en blanco iniciales y finales. Los espacios entre palabras permanecen intactos creando una vista visualmente agradable para el ojo del lector.

    Eliminar los espacios en blanco pero mantener los saltos de línea

    Cuando trabaje con cadenas de varias líneas, es posible que desee eliminar los espacios sobrantes pero conservar los saltos de línea. Para ello, en lugar del carácter de espacio en blanco \s, busque espacios [ ] o espacios y tabuladores [\t ]. Este último patrón resulta útil cuando los datos de origen se importan desde otra fuente, por ejemplo, un editor de texto.

    En el siguiente conjunto de datos, suponga que desea recortar todos los espacios iniciales/finales y todos los espacios intermedios menos uno, manteniendo intactas varias líneas. Para realizar la tarea, necesitará dos funciones RegExpReplace diferentes.

    La primera función sustituye varios espacios por un único carácter de espacio.

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

    El otro elimina los espacios al principio y al final de una línea:

    =RegExpReplace(A5, "^ +

    Basta con anidar las dos funciones una dentro de otra:

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

    Y obtendrás un resultado perfecto:

    Regex para sustituir varios espacios por un carácter

    En caso de que desee eliminar todos los espacios de una cadena y sustituir cada grupo de espacios consecutivos por un carácter específico, esto es lo que debe hacer:

    En primer lugar, utilice esta expresión regular para recortar los espacios en blanco iniciales y finales:

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

    A continuación, sirva la función anterior al texto argumento de otro RegExpReplace que sustituye uno o más espacios en blanco consecutivos por el carácter que especifique, por ejemplo, un guión:

    Patrón : \s+

    Sustitución : -

    Suponiendo que la cadena de origen está en A8, la fórmula toma esta forma:

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

    También puede introducir los patrones y las sustituciones en celdas separadas, como se muestra en la captura de pantalla:

    Regex para eliminar líneas vacías

    Los usuarios que tienen varias líneas en una celda suelen plantearse la siguiente pregunta: "Hay muchas líneas en blanco en mis celdas. ¿Hay alguna forma de eliminarlas que no sea repasar cada celda y borrar cada línea manualmente?" La respuesta: ¡Es muy fácil!

    Para que coincida con las líneas vacías que no tienen un solo carácter desde el inicio ^ de la línea actual hasta la siguiente línea \n, la regex es:

    Patrón : ^\n

    Si sus líneas visualmente en blanco contienen espacios o tabuladores, utilice esta expresión regular:

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

    Sólo tienes que sustituir la expresión regular por una cadena vacía utilizando esta fórmula, ¡y todas las líneas en blanco desaparecerán de una vez!

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

    Eliminación de espacios en blanco con las herramientas RegEx

    Los ejemplos anteriores han demostrado sólo una pequeña parte de las maravillosas posibilidades que ofrecen las expresiones regulares. Lamentablemente, no todas las funciones de las expresiones regulares clásicas están disponibles en VBA.

    Afortunadamente, las Herramientas RegEx incluidas con nuestra Ultimate Suite están libres de estas limitaciones ya que son procesadas por el motor .NET RegEx de Microsoft. Esto le permite construir patrones más sofisticados que no son soportados por VBA RegExp. Abajo encontrará un ejemplo de tal expresión regular.

    Regex para eliminar espacios entre números

    En una cadena alfanumérica, supongamos que desea eliminar los espacios en blanco sólo entre los números, de modo que una cadena como "A 1 2 B" se convierte en "A 12 B".

    Para hacer coincidir un espacio en blanco entre dos dígitos cualesquiera, puede utilizar las siguientes alternativas:

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

    Para crear una fórmula basada en las expresiones regulares anteriores, hay que seguir dos sencillos pasos:

    1. En el Datos de Ablebits en la pestaña Texto grupo, haga clic en Herramientas Regex .

    2. En el Herramientas Regex seleccione los datos de origen, introduzca la expresión regular, seleccione la opción Eliminar y pulse Eliminar .

      Para obtener los resultados como fórmulas y no como valores, recuerde marcar la casilla Insertar como fórmula casilla de verificación.

    En un momento, verá el AblebitsRegexRemove insertada en una nueva columna a la derecha de los datos originales.

    Alternativamente, puede introducir la expresión regular en alguna celda, por ejemplo A5, e insertar la fórmula directamente en una celda utilizando la función Función de inserción donde AblebitsRegexRemove está clasificada en AblebitsUDFs .

    Como esta función está especialmente diseñada para eliminar cadenas, sólo necesita dos argumentos: la cadena de entrada y la expresión regular:

    =AblebitsRegexRemove(A5, $A$2)

    Así es como se eliminan los espacios en Excel utilizando expresiones regulares. Te doy las gracias por leer y ¡espero verte en nuestro blog la semana que viene!

    Descargas disponibles

    Eliminar espacios en blanco con regex - ejemplos (archivo .xlsm)

    Ultimate Suite - versión de prueba (archivo .exe)

    Michael Brown es un entusiasta de la tecnología dedicado y apasionado por simplificar procesos complejos utilizando herramientas de software. Con más de una década de experiencia en la industria de la tecnología, ha perfeccionado sus habilidades en Microsoft Excel y Outlook, así como en Google Sheets y Docs. El blog de Michael está dedicado a compartir su conocimiento y experiencia con otros, brindando consejos y tutoriales fáciles de seguir para mejorar la productividad y la eficiencia. Ya sea un profesional experimentado o un principiante, el blog de Michael ofrece información valiosa y consejos prácticos para aprovechar al máximo estas herramientas de software esenciales.