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 !

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...



[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
Respuesta Responder a este mensaje
#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:%
hola, J. Carlos !

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...



[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

Respuesta Responder a este mensaje
#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:
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:%
hola, J. Carlos !

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...



[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




Respuesta Responder a este mensaje
#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:%
hola, J. Carlos !

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...



[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

Respuesta Responder a este mensaje
#5 Héctor Miguel
21/01/2006 - 19:02 | Informe spam
hola, J. Carlos !

... 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 ordena 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...??? [...]



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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida