Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Contar el número de alumnos aprobados/desaprobados en un rango de celdas

| 3 comentarios

Así como existe la manera de definir funciones (UDFs) con argumentos pre-definidos, codificadas mediante VBA a la medida de las necesidades, es posible también crear UDFs que actúen a partir de los datos de un rango de celdas, las cuales pueden ser de gran utilidad cuando se trabaja con gran cantidad de data.

A fin de explicar con mayor claridad la diferencia y aplicación de estos dos tipos de UDF, se ha preparado el siguiente archivo que contiene las notas de un grupo de alumnos de la universidad: Ejemplo UDF Rango

En primer lugar, en base a las notas obtenidas por cada alumno, se desea calcular el promedio final de cada uno; para lo cual utilizaremos una UDF con los argumentos ( TA1, TA2, TA3, Parcial, Final), los cuales corresponden a cada una de las notas del curso:

1

Se define el código de la siguiente manera:

Function NOTA_FINAL(TA1, TA2, TA3, Parcial, Final)

'En primer lugar se promedian las 3 tareas académicas

Tareas = (TA1 + TA2 + TA3) / 3

'Se define la función como el 30% de las tareas + 30% del examen parcial y 40% del examen final, con lo cual se obtiene el promedio o nota final del alumno

NOTA_FINAL = Round(Tareas * 0.3 + Parcial * 0.3 + Final * 0.4, 0)

End Function

Por ejemplo, en el primera caso, la función se ingresa en excel tal como se observa en la siguiente imagen:

2

(Para mayor visualización de la imagen, hacer click en la misma)

Por otra parte, se ha generado otra UDF que a diferencia de la anterior, con esta UDF vamos a seleccionar un rango de datos (el de los promedios finales), a fin de que la función determine la cantidad de alumnos que han aprobado el curso en base a la nota final obtenida vs la nota mínima aprobatoria (en este caso la nota mínima es 13).

Function APROBADOS(RANGO As Range)

'Definimos el número de filas del rango a seleccionar con la función, como un número entero

Dim Filas As Integer

'Se define el rango que tomará la función como la variable "Selección"
Seleccion = RANGO

'La variable filas captura la cuenta de filas del rango que se seleccionará (número de filas)
Filas = RANGO.Rows.Count

'Con la siguiente estructura de control se analiza cada fila a fin de evaluar si la nota obtenida es menor a la nota aprobatoria, de ser menor, el número de alumnos aprobados no aumenta, de lo contrario se cuenta 1 aprobado más
'Esto se repite hasta que se haya llegado a la última fila de la selección

For x = 1 To Filas
If Seleccion(x, 1) < 13 Then
APROBADOS = APROBADOS
Else: APROBADOS = APROBADOS + 1
End If
Next x

End Function

La función se utilizaría de la siguiente manera:

3

Del mismo modo, se elaboró otra UDF similar que en lugar de contar el número de aprobados, cuenta el número de desaprobados (ver archivo)

------------------------------------------------------------------------------------------

Elaborado por: Diego Solís Pezzia

3 comentarios

  1. Muy interesante, sería muy interesante realizar la UDF eliminando la nota mas baja de las TA.

    Saludos cordiales.

  2. Muy útil para todos los colegios y universidades. Creo que también sería bueno aplicarlo para ver la cantidad de alumnos que superaron el límite de faltas, para que la función avise quienes rinden el examen final y quienes no. Hay universidades que tienen esa regla, si no me equivoco, casi todas.

  3. Interesante la función. En mi último trabajo me encargaba de manejar la base de datos de paradas de máquina para elaborar reportes para gerencia. De toda la base de datos solo se consideraba como paradas de máquinas aquellas paradas que tenían duración mayores o iguales a 10 minutos. Con algunas modificaciones, esta función me hubiera sido de mucha utilidad para contabilizar aquellas paradas de máquinas.

Deja una respuesta

Los campos requeridos estan marcados con *.