problemon al ordenar muchas filas

14/10/2004 - 19:52 por Pevensen | Informe spam
Hola Grupo : Tengo el sgte problema, tengo varias planillas con muchas
filas de datos como siguen
lo que necesito es ordenar estas filas de una vez sin tener que hacerlo de a
una ni de a tres o seis hay alguna forma de tomar estas filas y hacerlo??

de antemano gracias
y felicitaciones por este grupo de noticias



4 10 31 8 2 12
2 22 38 6 5 32
20 17 13 33 22 4
31 12 23 15 39 7
39 38 9 3 6 35
2 15 31 4 6 26
27 6 5 16 4 36
19 10 14 16 28 33
33 30 34 4 2 17
38 34 37 6 21 27
28 24 29 25 19 17
24 27 29 3 23 35
25 2 12 6 19 16
23 30 25 13 20 9
31 36 33 20 25 14
19 20 34 9 18 11
14 15 36 30 25 3
 

Leer las respuestas

#1 Héctor Miguel
15/10/2004 - 09:08 | Informe spam
hola, Pevensen !

... varias planillas con muchas filas de datos [...]
... ordenar estas filas de una vez sin tener que hacerlo de a una ni de a tres o seis [...]



excel 'te ofrece' [un maximo de] 3 'criterios' de ordenacion ->por vez<-
-> si se trata de mas de 3 criterios...
1) seleccionas el rango 'completo' y utilizas [menu] datos / ordenar...
2) ordena 'primero los ultimos' criterios [de derecha->izquierda / abajo->arriba]
3) continua 'ordenando' los criterios 'pendientes' [SIN 'modificar la seleccion' y de 3 en 3]
-> o si lo prefieres... utiliza una macro +/- como la que te expongo al final [es solamente un 'ejemplo']

saludos,
hector.
en un modulo de codigo 'normal' ==Sub OrdenarTodas()
Dim Cols() As String, Sig As Integer
With ActiveCell.CurrentRegion
ReDim Cols(.Columns.Count)
For Sig = 1 To .Columns.Count
With .Cells(1, Sig)
Cols(Sig) = Mid(.Address, 2, InStr(2, .Address, "$") - 2)
End With
Next
For Sig = .Columns.Count To 1 Step -3
If Sig = 1 Then
.Sort _
Key1:=.Columns(Cols(Sig)), Order1:=xlAscending
ElseIf Sig = 2 Then
.Sort _
Key1:=.Columns(Cols(Sig - 1)), Order1:=xlAscending, _
Key2:=.Columns(Cols(Sig)), Order2:=xlAscending
Else
.Sort _
Key1:=.Columns(Cols(Sig - 2)), Order1:=xlAscending, _
Key2:=.Columns(Cols(Sig - 1)), Order2:=xlAscending, _
Key3:=.Columns(Cols(Sig)), Order3:=xlAscending
End If
Next
End With
End Sub

Preguntas similares