ordenar datos, pero en base a mas de 10 columnas.....???

21/01/2006 - 02:59 por J. Carlos Muñiz S. | Informe spam
ordenar datos, tengo cerca de 15 columnas, con diferentes datos, las ultimas
10 columnas son fechas, de como van caminando los expedientes por los
diferentes status.

necesito un reporte que me muestre la misma informacion, pero ordenada de la
ultima columna a la primera, y en forma descendente

alguien que me pueda ayudar

de antemano muchisimas gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/01/2006 - 03:27 | Informe spam
hola, J. Carlos !

Mostrar la cita
[creo que necesitas -un poquitin de- mas... 'paciencia'] :))
excel '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:=xlDescending
ElseIf Sig = 2 Then
.Sort _
Key1:=.Columns(Cols(Sig - 1)), Order1:=xlDescending, _
Key2:=.Columns(Cols(Sig)), Order2:=xlDescending
Else
.Sort _
Key1:=.Columns(Cols(Sig - 2)), Order1:=xlDescending, _
Key2:=.Columns(Cols(Sig - 1)), Order2:=xlDescending, _
Key3:=.Columns(Cols(Sig)), Order3:=xlDescending
End If
Next
End With
End Sub
#2 KL
21/01/2006 - 12:36 | Informe spam
Hola chicos,

A ver esto:

Sub Test()
Dim i As Long
With ActiveCell.CurrentRegion
For i = .Columns.Count To 1 Step -3
Select Case i = 1
Case 1: .Sort _
Key1:=.Columns(i), Order1:=2
Case 2: .Sort _
Key1:=.Columns(i - 1), Order1:=2, _
Key2:=.Columns(i), Order2:=2
Case Else: .Sort _
Key1:=.Columns(i - 2), Order1:=2, _
Key2:=.Columns(i - 1), Order2:=2, _
Key3:=.Columns(i), Order3:=2
End Select
Next
End With
End Sub

Saludos,
KL


"Héctor Miguel" wrote in message news:%
Mostrar la cita
#3 KL
21/01/2006 - 13:35 | Informe spam
huy-huy-huy!!! fe de erratas:

Sub OrdenarTodas()
Dim i As Integer
With ActiveCell.CurrentRegion
For i = .Columns.Count To 1 Step -3
Select Case i
Case 1: .Sort _
Key1:=.Columns(i), Order1:=2
Case 2: .Sort _
Key1:=.Columns(i - 1), Order1:=2, _
Key2:=.Columns(i), Order2:=2
Case Else: .Sort _
Key1:=.Columns(i - 2), Order1:=2, _
Key2:=.Columns(i - 1), Order2:=2, _
Key3:=.Columns(i), Order3:=2
End Select
Next
End With
End Sub

KL



"KL" wrote in message news:
Mostrar la cita
#4 J. Carlos Muñiz S.
21/01/2006 - 18:15 | Informe spam
perdon pero creo que ando perdido con codigo de excel..

que sigo las instrucciones de ir de 3 en tres, sin cambiar rango de
seleccion, pero

al pasar a las 2a tanda de ordenacion, las ultimas 3 me las ordenas de
acuerdo a las nuevas

o algo que haya realizado mal...???

lo intente con este codigo, ejecutando la macro, pero ???

tambien la tengo que ejecutar cierto numero de veces...???

perdon si soy socarron y no entiendo

muchas gracias de antemano


"Héctor Miguel" escribió en el mensaje
news:%
Mostrar la cita
#5 Héctor Miguel
21/01/2006 - 19:02 | Informe spam
hola, J. Carlos !

Mostrar la cita
1) el 'error' [MIO inicial] al interpretar '...ordenada de la ultima columna a la primera, y en forma descendente...'
fue que [literalmente] la columna que 'finalmente' comandaba el orden... seria -> la primera :-(
-> te paso la correccion al codigo al final del presente ;)

2) la macro se ejecuta SOLO una vez... [hace las veces de ordenar 'a mano' las veces que fueran necesarias] ;)
[solo es necesario tener seleccionada alguna celda 'dentro' del rango que se va a ordenar]

3) mi supuesto [ahora] es que la columna que se empieza a ordenar... es la # 6 [y hasta n_columnas posteriores] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
== el 'nuevo' codigo [aprovechando la depuracion de KL] :D
Sub OrdenarTodas()
Application.ScreenUpdating = False
Dim Col As Byte, Faltan As Byte
With ActiveCell.CurrentRegion
For Col = 6 To .Columns.Count Step 3
Faltan = .Columns.Count - Col + 1
Select Case Faltan
Case 1: .Sort _
Key1:=.Columns(Col), Order1:=2
Case 2: .Sort _
Key1:=.Columns(Col), Order1:=2, _
Key2:=.Columns(Col + 1), Order2:=2
Case Else: .Sort _
Key1:=.Columns(Col), Order1:=2, _
Key2:=.Columns(Col + 1), Order2:=2, _
Key3:=.Columns(Col + 2), Order3:=2
End Select
Next
End With
End Sub
Ads by Google
Search Busqueda sugerida