ordenar datos alfabeticamente

3 envíos / 0 nuevos
Último envío
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 2 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
ordenar datos alfabeticamente

Tengo estas lineas que hacen parte de una macro

 

'xxxxxxxxxxx
Rem Ordena la columna NOMBRE (B) alfabeticamente (A a Z)
'X = Hoja4.Range("B" & Rows.Count).End(xlUp).Row
'Set myrange = Hoja4.Range("B2:H" & X) 'ordena hasta la columna J
'myrange.Sort Key1:=Hoja4.Range("B1")
'xxxxxxxxxxx

 

Esta ordena desde A o B segun coloques. En mi caso tengo

 

A --------------------------B------------------------C--------------------------D ect

Codigo----------------Nombre--------------Direccion---------------Telefono  ect

 

Quiero ordenar por B (Nombre pero que arrastre el codigo y demas datos correspopndiente a ese nombre

 

Como esta ordena desde nombre(B) hasta H. H porque es donde terminan los datos

La columna A queda a la Izquierda, no a derecha.

¿Como se hace para que dicho codigo ordene todo, tomando en cuenta el dato de la izquierda?

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: ordenar datos alfabeticamente

Conviértelo en tabla.

Algo así como:

 

    ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes).Name = "Tabla"

    Range("Tabla[#All]").Select

    ActiveSheet.ListObjects("Tabla").TableStyle = "TableStyleMedium2"

 
Donde
-Selection es el rango que quieres convertir en tabla.
-"Tabla" es el nombre que le quieras dar a la tabla
-Las segunda y tercera línea son opcionales. La segunda selecciona la tabla y la tercera le cambia el estilo. Puedes jugar con esto lo que quieras
 
Luego, para ordenar, haces lo siguiente:
 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tabla").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tabla").Sort.SortFields. _
        Add Key:=Range("Tabla[[#All],[Codigo]]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tabla").Sort.SortFields. _
        Add Key:=Range("Tabla[[#All],[Nombre]]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tabla").Sort.SortFields. _
        Add Key:=Range("Tabla[[#All],[Telefono]]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tabla").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 
Esto lo que hace es lo siguiente:
 
1er línea: borra cualquier ordenación previa
2º-4º bloque: aplica, por orden, los criterios de ordenación. En este caso ordena primero por código, después por nombre y por último por teléfono (no tiene que tener sentido, es un ejemplo)
Bloque with: aplica los criterios de ordenación definidos antes.
 
Saludos
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 2 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Re: ordenar datos alfabeticamente

Hola cron, Gracias por tu respuesta la cual agradezco.

 

Estoy buscando algo mucho mas corto para no alargar el codigo.

Si aparece bien, si no pues pomdre la tuya en pratica.

 

Gracias una vez mas