Sacar merito en excel en registro de notas

Bueno hasta ahora nadie ha podido solucionar mi problema.

Lo que necesito es que una fórmula me saque el orden de merito respetando:

  1. Empates
  2. sin saltearse ningún puesto
  3. que sea automático

He usado jerarquía pero se saltea puestos

Según el excel que adjunto, el Orden de merito lo debe sacar en base al puntaje total.

Para "Dante amor"

SABANA NOTAS

1 respuesta

Respuesta
1

Te anexo la macro para los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 100 Then Exit Sub
    If Not Intersect(Target, Range("C:AE")) Is Nothing Then
        Application.ScreenUpdating = False
        Set h1 = ActiveSheet
        Set h2 = Sheets("Hoja2")
        h2.Cells.ClearContents
        u = h1.Range("B" & Rows.Count).End(xlUp).Row
        h1.Range("AH6:AH" & u).Copy
        h2.Range("B1").PasteSpecial xlValues
        u2 = h2.Range("B" & Rows.Count).End(xlUp).Row
        With h2.Sort
            .SortFields.Clear
            .SortFields.Add Key:=h2.Range("B1"), SortOn:=xlSortOnValues, _
                Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange h2.Range("B1:B" & u2)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        h2.[C1] = h2.[B1]
        With h2.Range("C2:C" & u2)
            .FormulaR1C1 = "=IF(R[-1]C[-1]=RC[-1],R[-1]C,R[-1]C+1)"
            .Value = .Value
        End With
        h2.Range("B1:C" & u2).RemoveDuplicates Columns:=1, Header:=xlNo
        u2 = h2.Range("B" & Rows.Count).End(xlUp).Row
        For i = 1 To u2
            Set r = h1.Range("AH6:AH" & u)
            Set b = r.Find(h2.Cells(i, "B"), lookat:=xlWhole, LookIn:=xlValues)
            If Not b Is Nothing Then
                celda = b.Address
                Do
                    'detalle
                    h1.Cells(b.Row, "AI") = h2.Cells(i, "C")
                    Set b = r.FindNext(b)
                Loop While Not b Is Nothing And b.Address <> celda
            End If
        Next
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

La hoja dos en funciona a que la has editado.

FUnciona para cualquier hoja si varia el numero de alumnos por ejemplo?

La hoja2 funciona cada que modificas algo en la hoja de datos.

Hay que copiar la macro en los eventos de cada hoja en la que quieras que funcione.

Y funciona para todos los alumnos, así sean 500

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas