Ordenar lista de datos web

06/09/2013 - 20:22 por juandaniel.garcia.veiga | Informe spam
Hola, usado lo de importar datos desde web en una hoja de excel que se actualiza cada X tiempo, en otra hoja le he dado formato, y en otra hoja quería coger 2 columnas (de la hoja donde están los datos) (una con nombres y otra con valores), hasta aquí no tuve problema, ahora el inconveniente me surge al querer ordenar automáticamente esa hoja. Es decir que los valores se ordenen de mayor a menor o de menor a mayor, esto lo hace al usar simplemente ordenar, pero cuando se actualizan los datos, si éstos han variado, entonces se me descoloca todo. También he probado con usar la función de k.esimo.menor o mayor pero claro me funciona solo para la columna de los valores, la de los nombres no se ordena con su valor correspondiente. ¿Hay alguna manera de conseguir eso?

Preguntas similare

Leer las respuestas

#1 Aladino
07/09/2013 - 20:10 | Informe spam
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lnLastRow As Long

lnLastRow = Range("A" & Me.Rows.Count).End(xlUp).Row

With Me.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("A2:A" & lnLastRow), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("B2:B" & lnLastRow), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("A1:B" & lnLastRow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Respuesta Responder a este mensaje
#2 Aladino
07/09/2013 - 20:12 | Informe spam
La manera más limpia de hacer esto es con código VBA:

- Haz clic derecho en el nombre de la hoja en la que importas los datos y se actualizan
- Ver código
- En el panel blanco de la derecha copia el siguiente código:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lnLastRow As Long

lnLastRow = Range("A" & Me.Rows.Count).End(xlUp).Row

With Me.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("A2:A" & lnLastRow), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("B2:B" & lnLastRow), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("A1:B" & lnLastRow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

NOTA: Este código presupone que los datos se importan en las columnas A y B, de no ser así, modifica las columnas en el código

www.5incoaprendices.com
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida