Macro que haga un TOP 10 de los clientes que más han comprado en el almacén

Tengo una hoja llamada "Clientes" en ella en la columna "D" tengo a todos los clientes del almacén desde la fila 2 en adelante. En la columna "U" tengo el valor acumulado que cada uno de ellos ha pagado en el almacén en las compras que han realizado.

Quisiera una macro que haga una tabla tipo TOP 10 de los 10 clientes que más han comprado en la tienda, colocando de primero el que más ha comprado y asi sucesivamente el segundo en adelante. La idea es que en una columna esté el nombre del cliente y en la columna de al lado el valor acumulado que ha comprado.

1 Respuesta

Respuesta
2

Adjunto macro solicitada. Debes indicar dónde guardarás la tabla resultado, en el ejemplo se guarda en Hoja9.

Estoy considerando que los datos van con títulos.

Sub TOPTEN()
'x Elsamatilde
Application.ScreenUpdating = False
'coloca tabla resumen en hoja9
    Range("D:D,U:U").Copy Destination:=Sheets("Hoja9").Range("A1")
'ordena de > a <
    Sheets("Hoja9").Select
   ' ActiveSheet.Paste
    ActiveWorkbook.Worksheets("Hoja9").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja9").Sort.SortFields.Add Key:=Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja9").Sort
        .SetRange Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
'solo deja las 10 1ras filas
finx = Range("A" & Rows.Count).End(xlUp).Row
If finx > 11 Then Rows("12:" & finx).Delete
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas