Ordenación en VBA

Resuelto
Hola,

Tengo una tabla de Excel con un número indeterminado de filas (variables), y me gustaría realizar una clasificación en 2 niveles.

El primero en orden alfabético (columna B)
El segundo también en orden alfabético (columna D)

Quisiera hacer esta clasificación en todo el tabla, excepto en la columna A que contiene los números de línea, porque si la inserto me encuentro con el número 15 por encima del número 20, lo cual no es ideal.

Agradezco sus respuestas

Configuración: Windows 7 / Internet Explorer 10.0

3 respuestas

  1. hola,

    aquí está el código vba:

    sub ordenar
    i=1
    ' permite definir el número de filas de tu tabla gracias a la variable i
    do while cells(I,1) <> ""
    i=i+1
    loop

    Range(cells(1,2),cells(i,10)).Select 'selecciona el rango de la celda B1 a Ji
    ==> J representa el 10 (si quieres detenerte antes de otra columna, sustituye el 10 por el número de columna) e i representa la última fila de tu tabla

    'Para el resto, reemplaza Feuil1 por el nombre de tu hoja
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(cells(2,2),cells(i,2)), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(cells(2,4),cells(i,4)), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
    .SetRange Range(cells(2,2),cells(i,10))
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    end sub
    -1