Saltar al contenido

Ordenar datos numéricos de varias columnas


Recommended Posts

publicado

Hola a todos,

Tengo una pequeña dificultad y no encuentro la manera de solucionarla.

Me explico.

Tengo una hoja simple con datos numéricos en tres columnas, la B, C y D y quiero ordenarlos cada vez que introduzco números nuevos.

El caso es que si uso el ordenar de Excel y le indico que me ordene de menor a mayor, la coluna B, C y D, sólo me hace la B las otras no y yo lo que necesito es que me ordene la columna B empezando por el nº más bajo de las tres columnas, cuando terminen los datos de esa columna siga en la C con el siguiente que corresponda tras el último de la B y en la D igual pero con respecto a la D.

Ejemplo:

Columna B: 3, 5, 1, 4, 9

Columna C: 6, 11, 29, 7, 33

Columna D: 2, 32, 15, 8, 14

Tras ordenar:

Columan B: 1, 2, 3, 4, 5

Columna C: 6, 7, 8, 9, 11, 14

Columna D: 14, 15, 29, 32, 33

Espero que alquien pueda ayudarme.

Un saludos y gracias a todos.

publicado

Hola:

Esta macro hace lo que estás buscando.

Utiliza la columna AA como columna de apoyo, si la tienes ocupada deberás cambiar la macro.

Sub Ordenar()
Dim B, C, D
'----------------------------------------
B = Range("B" & Rows.Count).End(xlUp).Row
C = Range("B" & Rows.Count).End(xlUp).Row
D = Range("B" & Rows.Count).End(xlUp).Row
'---------------------------------------
Range("B1:B" & .Copy Range("AA1")
Range("C1:C" & C).Copy Range("AA" & B + 1)
Range("D1:D" & D).Copy Range("AA" & B + C + 1)
'---------------------
Range("AA:AA").SortSpecial
'---------------------
Range("AA1:AA" & .Copy Range("B1")
Range("AA" & B + 1 & ":AA" & B + C).Copy Range("C1")
Range("AA" & B + C + 1 & ":AA" & B + C + D).Copy Range("D1")
Range("AA:AA").Clear
End Sub
[/CODE]

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.