Excel Avanzado

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

Excel Avanzado

Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final.

| 3 comentarios

Excel ofrece una extensa variedad de fórmulas las cuales nos permiten realizar diversos cálculos. Sin embargo, muchas veces estas fórmulas no se adaptan a nuestras necesidades. Para estas necesidades personales de los usuarios se pueden crear fórmulas definidas por el usuario (UDF, por sus siglas en inglés). Estas se definen en el entorno de VBA.

Por ejemplo, Excel ofrece la posibilidad de calcular el promedio simple de una cantidad de números determinada. Sin embargo, para calcular el promedio de prácticas en la PUCP, se debe eliminar la nota más baja, lo cuál no está incluido en la Función Promedio del Excel, para lograrlo se deben emplear otras funciones, lo cual hace ineficiente el cálculo.

Para simplificar esta labor se ha creado una fórmula que elimina la menor nota y calcula el promedio sobre las 3 notas restantes. La lógica de esta función consiste en sumar 3 notas, prueba todas las combinaciones posibles, y selecciona la mayor, la cual contiene las 3 mayores notas, de esta forma se elimina la nota más baja. El nombre de la función es: prompracticas.

Adicionalmente, para calcular el promedio final, ya que las distintas notas tienen un peso distinto, se ha creado una función que calcule el promedio ponderado según estos pesos. El nombre de la función es: promfinal.

El uso y el código de cada una de las funciones se puede ver en el siguiente archivo: Promedio de Prácticas y Promedio Final

Elaborado por:  Rodolfo Rojas B.

3 comentarios

  1. Una alternativa al codigo es la propuesta que trabajamos definiendo tipo de variables y para eliminar las dos notas mas bajas, como se puede apreciar en la lo que se muestra a continuacion:

    Function PromNotaElim_2(R As Range) As Double
    Dim n, i, Imin1, Imin2 As Integer

    'n es igual al numero de elementos de la seleccion
    'Imin1 es la posicion de la primera nota minima
    'Imin2 es la posicion de la segunda nota minima
    'Ojo R es un vector 1xn que no hace referencia a la celda

    Dim suma As Double
    suma = 0
    n = R.EntireColumn.Count
    For i = 1 To n
    suma = suma + R(1, i)
    Next i

    Imin1 = 1
    For i = 1 To n
    If R(1, i) < R(1, Imin1) Then
    Imin1 = i
    End If
    Next i

    Imin2 = 1
    If Imin1 = 1 Then
    Imin2 = 2
    End If

    'Comparando con todos excepto con la posicion de la primera nota minima Imin1
    For i = 1 To n
    If (R(1, i) < R(1, Imin2)) And (i Imin1) Then
    Imin2 = i
    End If
    Next i
    PromNotaElim_2 = (suma - R(1, Imin1) - R(1, Imin2)) / (n - 2)
    End Function

    Espero sus comentarios.
    Saludos,
    Jorge Luis Rojas Silva

  2. Ma sencillo es utilizando una variable auxiliar:

    aux = 20
    If nota1 <= aux then aux = nota1
    If nota2 <= aux then aux = nota2
    If nota3 <= aux then aux = nota3
    If nota4 <= aux then aux = nota4

    promfinal = (nota1 + nota2 + nota3 + nota4 - aux) / 3

    Saludos

  3. Es interesante, como podemos modificar los valores según nuestras necesidades propias, en le caso de esta UDF permite moldar la función del promedio segun los pesos, que aparte se puede combinar con otras funciones de este blog como por ejemplo el UDF para notas ponderadas la cual permite promediar según la asistencia del alumno.

Deja una respuesta

Los campos requeridos estan marcados con *.