Excel Avanzado

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

Excel Avanzado
14 150x77, Contar el número de alumnos aprobados/desaprobados en un rango de celdas

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:

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

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:

23 300x36, Contar el número de alumnos aprobados/desaprobados en un rango de celdas

(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:

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

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

Deja una respuesta

Los campos requeridos estan marcados con *.