Macros Excel para quitar espacios en diferentes posiciones

Compatibilidad: Excel 365 2021 2019 2016

Al importar datos o al escribir, es habitual incluir espacios en blanco acompañando al texto, necesitando macros Excel para quitar espacios en diferentes posiciones.

Cuando el texto en una celda incluye espacios en blanco acompañando al texto, sí filtramos, ordeanamos o buscamos, por ejemplo, a "María" considera diferente si se muestra como "   María" o "María    ".

Macros Excel para quitar espacios en diferentes posiciones
  1. Con Excel abierto.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro deseada:

  

  • ELIMINAR ESPACIOS A LA IZQUIERDA DEL TEXTO
    1. Escribir el código de la macro:

      Sub EspacioIzquierda()

      Dim celda As Range

      For Each celda In Selection

      celda.Value = LTrim(celda.Value)

      Next

      End Sub

      - LTrim. Elimina todos los espacios de texto a su izquierda.

 

  1. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.

  2. Seleccionar el rango deseado / Ejecutar la macro y verificar como elimina los espacios al inicio del texto.

Hoja Excel con datos que incluyen espacios a la izquierda del texto y sin ellos
  • ELIMINAR ESPACIOS A LA DERECHA DEL TEXTO
    1. Escribir el código de la macro:

      Sub EspacioDerecha()

      Dim celda As Range

      For Each celda In Selection

      celda.Value = RTrim(celda.Value)

      Next

      End Sub

      - RTrim. Elimina todos los espacios de texto a su derecha.

 

  1. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.

  2. Seleccionar el rango deseado / Ejecutar la macro y verificar como elimina los espacios al final del texto.

Hoja Excel con datos que incluyen espacios a la derecha del texto y sin ellos
  • ELIMINAR ESPACIOS A LA IZQUIERDA Y DERECHA DEL TEXTO
    1. Escribir el código de la macro:

      Sub EspacioIzqDer()

      Dim celda As Range

      For Each celda In Selection

      celda.Value = Trim(celda.Value)

      Next

      End Sub

      - Trim. Elimina todos los espacios del texto, excepto los incluidos entre palabras.

 

  1. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.

  2. Seleccionar el rango deseado / Ejecutar la macro y verificar como elimina los espacios al inicio y al final del texto.

Hoja Excel con datos que incluyen espacios a la izquierda y a la derecha del texto y sin ellos
  • ELIMINAR ESPACIOS A LA IZQUIERDA, DERECHA Y ENTRE PALABRAS
    1. Escribir el código de la macro:

      Sub EspacioTodos()

      Dim celda As Range

      For Each celda In Selection

      celda.Value = WorksheetFunction.Trim(celda.Value)

      Next

      End Sub

 

  1. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.

  2. Seleccionar el rango deseado / Ejecutar la macro y verificar como elimina los espacios al inicio, al final del texto y entre palabras (excepto una).

Hoja Excel con datos que incluyen espacios a la izquierda, a la derecha y entre palabras y sin espacios.
  • CARACTER 160

El carácter 160 en Excel se muestra como un espacio en blanco pero no lo es, ya que el espacio en blanco se corresponde con el carácter 32.

    1. Escribir el código de la macro:

      Sub EspacioCaracter160()

      Dim Cell As Range, Texto As Variant

      For Each Cell In Selection

      Texto = Cell.Value

      Texto = WorksheetFunction.Substitute(Texto, Chr(160), "")

      Cell.Value = Texto

      Next Cell

      End Sub

 

  1. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.

  2. Seleccionar el rango deseado / Ejecutar la macro y verificar como elimina el carácter 160, donde se encuentre insertado.

    

Nivel de dificultad: Experto VBA-Macros Excel Experto VBA - Macros

- Consultar:

22 comentarios en “Macros Excel para quitar espacios en diferentes posiciones

  • Me funciona bien pero cuando quiero hacer eso en un archivo que continene más de 5000 registros, me sale un error, alguien sabe como hacer el siguiente código para muchos datos? ... Por fa... gracias

    Sub EspacioTodos()

    Dim celda As Range

    For Each celda In Selection

    celda.Value = WorksheetFunction.Trim(celda.Value)

    Next

    End Sub

  • Hola si necesito que no los elimine sino que me indique si tiene o no tiene espacios en blanco a la derecha o izquierda con que función se pueden encontrar.

  • Hola,

    ¿Cómo puedo hacer el código para que la macro busque automaticamente todas las celdas de un rango, y no las tenga que seleccionar?

  • Todas funcionan bien, pero, no así la eliminación de los espacios intermedios. faltara algo a la instrucción?

    gracias por tu gran ayuda

  • La macro para elimininar el caracter 160 me funciona bien pero solo en algunos casos, Si los datos son texto no tengo ningún problema, pero si son números me altera la posición de los decimales. El problema lo tengo porque en la misma columna hay datos que son números y otros textos.

    • Hola Emilio,

      El siguiente código anida los caracteres no imprimibles:

      Sub Eliminar()
      'Paso 1: Quitar saltos de línea
      ActiveSheet.UsedRange.Replace What:=Chr(10), Replacement:=""
      'Paso 2: Quitar retornos de carro
      ActiveSheet.UsedRange.Replace What:=Chr(13), Replacement:=""
      'Paso 3: Quitar los espacios de no separación
      ActiveSheet.UsedRange.Replace What:=Chr(160), Replacement:=""
      'Paso 4: Quitar los espacios
      ActiveSheet.UsedRange.Replace What:=Chr(60), Replacement:=""

      Dim celda As Range
      For Each celda In Selection
      celda.Value = WorksheetFunction.Trim(celda.Value)
      Next
      End Sub

      Saludos.

  • Hola, tengo una duda. Dices "Guardar el libro con la extensión *.xlsm. Libro habilitado para macros"
    Soy totalmente novato, perdona. Lo que guardas es la hoja de excel sobre la que quieres trabajar, entiendo. Yo no tengo esa extensión (*.xlsm.). Tengo Microsoft excel 2002..

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.