VBA para ordenar rangos de celdas

Estimad@s colegas,

Necesito que me ayuden, para que mediante un código VBA pueda ordenar un rango de celdas (de una hoja Excel) a partir los valores de una columna, en forma ascendente/descendente. El código lo necesito integrar en una aplicación en .Net que estoy haciendo (por medio de Interop. Excel). Por lo que he entendido ésto se hace con la función "Sort", pero no sé como utilizarla correctamente.

Teniendo en cuenta que el rango que quiero ordenar es: "A1" - "C100", se tiene que ordenar por la columna "B" (de forma ascendente/descendente), aclarando que no tiene encabezados (solamente son valores).

Ejemplo (como tengo los rangos):

            A                    B                     C

1        valor1          50%              valor3

2        valor4          2.3%             valor5

3       valor6          99.9%            valor7

4       valor8           37%              valor9

5       valor 10        15.4%          valor11

Nx          Vx                x%                 Vx

100   valor 12        34.4%          valor13

1 respuesta

Respuesta
4

Este es el código para ordenar de forma ascendente por la columna B

Sub ordenar()
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("B1:B100"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SetRange Range("A1:C100")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Y este es para ordenar de forma descendente

Sub ordenar2()
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("B1:B100"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SetRange Range("A1:C100")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Saludos.Dante Amor

Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas