Ordenar las celdas de izquierda a derecha

Necesito una macro para ordenar las celdas de izquierda a derecha

Ejemplo: tengo los números 10-07- 30-02-09-95-87

Necesito que me los ordene: 02-07-09-10-30-87-95

Rango de celdas B1:B6

2 Respuestas

Respuesta
1

Dado que el rango que mencionas tiene formato vertical, aparentemente, lo que necesitas es, primero trasponer a un rango horizontal y luego ordenarlo.

Esta rutina hace ambas cosas:

Sub order()
'variables:
ElRango = "B1:B6"
Destino = "C2" 'donde quieras que quede ordenado de izquierda a derecha
Range(ElRango).Copy
Range(Destino).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range(Destino).CurrentRegion.Sort Key1:=Range(ElRango).Cells(1, 1), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
        DataOption1:=xlSortNormal
End Sub

Espero que te sea de utilidad. Si no, escribime de nuevo.

Abrazo
Fernando

No, Fernando, los tengo en rango horizontal, lo que quise decir es que los números están contiguos de la celda B1 a la celda B6

B1 B2 B3 B4 B5 B6

10  07 95 80 76 09

Los necesito ordenar de menor a mayor de izquierda a derecha

07 09 10 76 80 95

Espero haberlo explicado bien ahora, gracias

Entonces es más simple aún:

Basta eliminar lo de trasponer datos:

Sub order()
'variables:
Destino = "C2" 'donde inicia el rango a ordenar de izquierda a derecha
Range(Destino).CurrentRegion.Sort Key1:=Range(ElRango).Cells(1, 1), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
        DataOption1:=xlSortNormal
End Sub

Casi que no sería necesaria la rutina de VBA porque es una función natural de MS Excel.

Normalmente usamos rangos verticales para ordenar pero en la ventana de diálogo de Ordenar, en Opciones podés elegir que sea de izquierda a derecha indicando, luego, cuál es la fila que rige el ordenamiento.

Ojala haya acertado en la respuesta.

.

Buenas de nuevo:

Una corrección menor, pero importante, a la instrucción de ordenamiento horizontal:

Sub orderLat()
Destino = "C2" 'donde inicia el rango a ordenar de izquierda a derecha
Range(Destino).CurrentRegion.Sort Key1:=Range(Destino).Cells(1, 1), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
        DataOption1:=xlSortNormal
End Sub

Probalo y comentame.

Saludos

Fernando

.

Respuesta
1

¿Pero cómo tienes los números?

Tienes en cada celda un número, es decir, en la celda B1 tienes el número 10, ¿en la celda B2 tienes el 07?

¿O tienes todo en una celda separados por guiones?

En tu ejemplo pusiste 7 números, pero en el rango de celdas solamente hay 6 celdas.

Sería más claro si pones dos imágenes, una mostrando cómo están los números y en otra imagen mostrando cómo quieres el resultado. Procura que en las imágenes se vean las filas filas y las columnas de excel.

Dante, los números están en celdas contiguas

B1 B2 B3 B4 B5 B6

10  07 95 80 76 09

Los necesito ordenar de menor a mayor de izquierda a derecha

07 09 10 76 80 95

Gracias.-

Pero cuando hablas de izquierda a derecha significa que los números están en estas celdas:

B2, C2, D2, E2, F2, G2, así como se muestra la imagen:

Pero tu explicación no coincide con tu ejemplo, es por eso que no me queda claro cómo tienes los datos y cómo quieres el resultado.

Sería más fácil si lo pones en imágenes.

O envíame tu archivo con el ejemplo de lo que tienes y de lo que esperas como resultado.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Diego Carlos Giufre” y el título de esta pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas