Aplicar Fórmula =Espacios() de Excel a toda la tabla con Macros

Me gustaría saber si existe alguna forma de ejecutar la fórmula =espacios() a toda una tabla de excel con Macros.

Yo tengo una función en mi excel donde adjunto el archivo y me empieza a procesar todas las validaciones que tengo... Eso ya esta hecho... Solo que me he dado cuenta que necesito primero quitar los espacios adicionales que tiene cada celda, y esto tiene que ser indiferente a la cantidad de filas que tenga, es decir, la macro primero debe identificar la cantidad de filas y columnas a la que debe procesar dicha fórmula.

Respuesta
1

Prueba esta macro tardo 3 segundos en procesar 14000 filas y 9 columnas.

Sub quita_espacios()
INICIO = Time
Set DATOS = Range("A1").CurrentRegion
MATRIZ = DATOS
With DATOS
    R = .Rows.Count: C = .Columns.Count
    For I = 1 To R
        For J = 1 To C
            MATRIZ(I, J) = Trim(MATRIZ(I, J))
        Next J
    Next I
Range(.Address) = MATRIZ
End With
FIN = Time

Hola James,

Gracias por tu respuesta, acabo de probarlo pero no funciona cuando tengo más de un espacio entre palabras. Ejemplo: Hola Mundo.

Gracias de antemano

¿Entonces dejame ver si entiendo tu quieres que hola mundo quede como holamundo sin espacios de ningún tipo?, entonces usa esta macro solo cambia el B2 por la celda donde empiecen tus datos.

Sub quitar_espacios()
Range("b2").CurrentRegion.Replace what:=(" "), replacement:=""
End Sub

El ejemplo que puse no salio bien ya que todoexpertos quito los espacios en blanco entre Hola Mundo. Lo que yo deseo es que entre cada palabra exista solo 1 espacio. Tu macro hacer muy bien en identificar y eliminar los espacios en blanco a la derecha y a la izquierda, pero falta eliminar los espacios adicionales que exista entre cada palabra.

Esta macro borra espacios en blanco a la izquierda, derecha y espacios en blanco adicionales entre las líneas de texto dejando solo el que separa a las palabras

Sub quita_espacios()
inicio = Time
Set datos = Range("a1").CurrentRegion
MATRIZ = datos

With datos
r = .Rows.Count: C = .Columns.Count
For I = 1 To r
For J = 1 To C
MATRIZ(I, J) = WorksheetFunction.Trim(MATRIZ(I, J))
Next J
Next I
Range(.Address) = MATRIZ
End With
fin = Time
tiempo = fin - inicio
MsgBox (r & " filas procesadas en " & Second(tiempo) & " SEGUNDOS"), vbInformation, "AVISO EXCEL"
End Sub

2 respuestas más de otros expertos

Respuesta
1

Deseas eliminar espacios, prueba algo así adáptalo a tus necesidades, por ejemplo cambia Hoja1 al nombre de tu hoja en lugar de B3:b18 Adáptalo, o si gustas en un ratito me desocupo y te puedo ayudar con más calma, Saludos

Sub Espacios()
Dim cell As Range, AreaToTrim As Range
Set AreaToTrim = Worksheets("Hoja1").Range("B3:B18")
For Each cell In AreaToTrim
cell = Trim(cell)
Next cell
End Sub

Respuesta
1

Así es con trim puedes limpiar los espacios que sobran también puedes usar tirmR o trim L si los espacios están a la izquierda o derecha.

Te paso unos ejemplos con cadena de texto que te puede ayudar

https://youtu.be/34mzRbaPUfU

https://youtu.be/a40NuvB3YF8

https://youtu.be/gROacIqa2n4

https://youtu.be/j4rhWWeC2Vw

https://youtu.be/0iB-WlPcfi8

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas