Ordenar la información hacia el lado izquierdo.
Experto, espero me puedas ayudar, hace algún tiempo desde todoexpertos recibí una macro la cual funcionaba sin problemas, esta macro ordenaba toda la información hacia las celdas vacías al lado izquierdo.
Ejemplo: Lo que se tiene
A B C D E
1 SI 05 04 GATO 04
2 07 40 08
3 NO SI CAL
4 SOL 15 01
Lo que se requiere
A B C D E
1 SI 05 04 GATO 04
2 07 40 08
3 NO SI CAL
4 SOL 15 01
Y la macro en cuestión es esta:
Function QuitarEspacios(CeldaInicial As String, CeldaFinal As String)
CeldaInicialColumna = Mid(CeldaInicial, 1, 1)
CeldaInicialFila = Val(Mid(CeldaInicial, 2))
CeldaFinalColumna = Mid(CeldaFinal, 1, 1)
CeldaFinalFila = Val(Mid(CeldaFinal, 2))
For Fila = CeldaInicialFila To CeldaFinalFila
For Columna = Asc(CeldaInicialColumna) To Asc(CeldaFinalColumna) - 1
For ColumnaSiguiente = Columna + 1 To Asc(CeldaFinalColumna)
Celda = Trim(Chr(Columna)) + Trim(Str(Fila))
If Range(Celda).Value = "" Then
CeldaSiguiente = Trim(Chr(ColumnaSiguiente)) + Trim(Str(Fila))
CeldaSiguiente2 = Trim(Chr(ColumnaSiguiente + 1)) + Trim(Str(Fila))
Range(Celda).Value = Range(CeldaSiguiente).Value
Range(CeldaSiguiente).Value = ""
Celda = CeldaSiguiente
End If
Next
Next
Next
End Function
_____________________________________________________________________________________________
Sub llamar_macro()
If QuitarEspacios("C3", "AP2575") Then
End If
End Sub
Siendo C3:AP2575 el rango que debo ordenar.
La macro queda estacionada en:
Sub llamar_macro()
Muchas gracias por tu ayuda y por el apoyo a quienes no entendemos mucho de esta gran aplicación.
Ejemplo: Lo que se tiene
A B C D E
1 SI 05 04 GATO 04
2 07 40 08
3 NO SI CAL
4 SOL 15 01
Lo que se requiere
A B C D E
1 SI 05 04 GATO 04
2 07 40 08
3 NO SI CAL
4 SOL 15 01
Y la macro en cuestión es esta:
Function QuitarEspacios(CeldaInicial As String, CeldaFinal As String)
CeldaInicialColumna = Mid(CeldaInicial, 1, 1)
CeldaInicialFila = Val(Mid(CeldaInicial, 2))
CeldaFinalColumna = Mid(CeldaFinal, 1, 1)
CeldaFinalFila = Val(Mid(CeldaFinal, 2))
For Fila = CeldaInicialFila To CeldaFinalFila
For Columna = Asc(CeldaInicialColumna) To Asc(CeldaFinalColumna) - 1
For ColumnaSiguiente = Columna + 1 To Asc(CeldaFinalColumna)
Celda = Trim(Chr(Columna)) + Trim(Str(Fila))
If Range(Celda).Value = "" Then
CeldaSiguiente = Trim(Chr(ColumnaSiguiente)) + Trim(Str(Fila))
CeldaSiguiente2 = Trim(Chr(ColumnaSiguiente + 1)) + Trim(Str(Fila))
Range(Celda).Value = Range(CeldaSiguiente).Value
Range(CeldaSiguiente).Value = ""
Celda = CeldaSiguiente
End If
Next
Next
Next
End Function
_____________________________________________________________________________________________
Sub llamar_macro()
If QuitarEspacios("C3", "AP2575") Then
End If
End Sub
Siendo C3:AP2575 el rango que debo ordenar.
La macro queda estacionada en:
Sub llamar_macro()
Muchas gracias por tu ayuda y por el apoyo a quienes no entendemos mucho de esta gran aplicación.
1 Respuesta
Respuesta de Nelson Felipe Serrano
1