Prueba este macro (seguramente se podrá mejorar, porque lo acabo de hacer). Solo tienes que cambiar la celda inicial y la final, para saber qué rango de celdas son las que se van a tratar:
Código:
Sub acomodar_texto()
Application.ScreenUpdating = False
'***********************
'datos a cambiar
celda_inicial = "A1"
celda_final = "C3"
'***********************
'pasamos los datos a variables
min_fila = Range(celda_inicial).Row
max_fila = Range(celda_final).Row
min_columna = Range(celda_inicial).Column
max_columna = Range(celda_final).Column
'nos situamos en la primera celda
Range(celda_inicial).Select
Selection.NumberFormat = "@"
'comenzamos a contar caracteres de largo
maximo = 0
For i = min_fila To max_fila
For j = min_columna To max_columna
maximo_tmp = Len(ActiveCell)
If maximo_tmp > maximo Then maximo = maximo_tmp
ActiveCell.Offset(0, 1).Select
Selection.NumberFormat = "@"
Next
ActiveCell.Offset(1, -max_columna).Select
Next
'nos situamos en la primera celda
Range(celda_inicial).Select
'añadimos los espacios necesarios,
'una vez determinado el máximo
For i = min_fila To max_fila
For j = min_columna To max_columna
ActiveCell = ActiveCell & String(maximo - Len(ActiveCell), " ")
ActiveCell.Offset(0, 1).Select
Next
ActiveCell.Offset(1, -max_columna).Select
Next
Application.ScreenUpdating = True
End Sub
Edito:
Guarda el fichero con los datos originales
antes de ejecutar el macro. Seguidamente ejecutas el macro, y te convertirá a texto todos los datos, incluidos los numéricos, y les añadirá detrás los espacios necesarios para que al guardar los datos como fichero de texto, queden perfectamente elineados.
Salu2