¿Cómo lograr que una macros seleccione parámetros, y después lo devuelva a su posición?

Tengo una base de datos con datos de 3 tipos y me gustaría realizar una macros
(O ver si existe alguna formula)que me seleccione los datos de cada tipo y me haga un ranking, para luego devolverlo a la base( El ranking debe ser de acuerdo a cada tipo y no con un general).(Por ejemplo en la imagen la jerarquización se hace en base a todos los parámetros, y debe ser un ranking en base a cada tipo en la misma base)

Por ejemplo que me seleccione todo los de APN y me haga un ranking, para luego devolverlo a su misma posición, luego todo lo de ajuste y haga lo mismo, cabe destacar que cada tipo esta ligado a un nombre único.

2 respuestas

Respuesta
1

Prueba esta macro

Sub jerarquizar()
Set datos = Range("a1").CurrentRegion
With datos
    f = .Rows.Count: c = .Columns.Count
    Set datos = .Rows(2).Resize(f - 1)
    Set orden = .Columns(c + 1).Resize(f - 1, 1)
End With
With orden
    .Cells(1, 1) = 1
    .Cells(1, 1).AutoFill Destination:=Range(.Columns(columnas + 1).Address), Type:=xlFillSeries
End With
With datos
    Set datos = .Resize(f - 1, c + 1)
    c = .Columns.Count
    .Sort key1:=Range(.Columns(5).Address), order1:=xlDescending
    Set orden = .Columns(c + 1).Resize(f - 1, 1)
End With
With orden
    .Cells(1, 1) = 1
    .Cells(1, 1).AutoFill Destination:=Range(.Columns(columnas + 1).Address), Type:=xlFillSeries
    Set datos = .CurrentRegion
End With
With datos
    c = .Columns.Count
    Set destino = .Columns(c + 2).Resize(f, 2)
    Set origen = Union(.Columns(5), .Columns(c))
End With
With destino
    origen.Copy: destino.PasteSpecial Paste:=xlValues
    .RemoveDuplicates Columns:=1
    Set destino = .CurrentRegion
    f = .Rows.Count
    For i = 2 To f
        numero = .Cells(i, 1)
        jerarquia = .Cells(i, 2)
        fila = WorksheetFunction.Match(numero, datos.Columns(5), 0)
        cuenta = WorksheetFunction.CountIf(datos.Columns(5), numero)
        datos.Cells(fila, 6).Resize(cuenta, 1) = jerarquia
    Next i
    .Clear
End With
With datos
    .Columns(c).Clear
    Set datos = .CurrentRegion
    c = .Columns.Count
    .Sort key1:=Range(.Columns(c).Address), order1:=xlAscending, Header:=xlYes
    .Columns(c).Clear
End With
Set destino = Nothing
Set origen = Nothing
Set datos = Nothing
Set orden = Nothing
End Sub
Respuesta
1

Matias Perez,

Adjunto en enlace archivo adjunto con el desarrollo de tu consulta para su revisión.

Se empleo funciones en su forma matricial para poder obtener el ranking por tipo.

=COINCIDIR(E2;K.ESIMO.MAYOR((SI($B$2:$B$11=B2;$E$2:$E$11;0));FILA(INDIRECTO("1:10")));0)

Recuerda que después de ingresar la fórmula debes pulsar CONTROL + SHIFT + ENTER.

Ranking por tipo

Ander GS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas