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
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
Enlaces relacionados:
- [VBA] Ordenar una tabla de Excel con VBA
- [VB/Excel] Ordenar de forma ascendente en una columna
- Fórmula de Excel: contar el número de valores diferentes
- Copia hasta la última línea llena
- Excel: si mi celda contiene tal texto o tal texto
- Fórmula de Excel: "SI" una celda contiene una palabra, entonces ?
3 respuestas
-
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