Excel Avanzado

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

Excel Avanzado
resultado final promedios

WORKSHEETFUNCTION.MAX para el promedio de notas

| 31 Comments

La función WorksheetFunction.Max nos indica el máximo número que se encuentra en un rango definido. A pesar de que las funciones de tipo WorksheetFunction no son propias del lenguaje VBA, se puede trabajar con las mismas en este lenguaje usando: application.worksheetfunction.””.

Descargar Ejemplo de WORKSHEETFUNCTION.MAX

A continuación presento un ejemplo simple para entender el uso de esta función:

1. En una lista de notas de una clase, lo que se quiere hacer es encontrar la máxima nota y publicarla mediante un mensaje de aviso, para que de esta manera el profesor sepa cómo va el promedio de notas en su curso. La lista es la siguiente:

lista promedios

2.Para logar esto, primero definimos las variables que se van a usar y luego se aplica la formula applitacion.worksheefunction.max para indicar la nota máxima. Debo de indicar que debido a que no se sabe la cantidad de alumnos por ciclo, se realiza una lectura de las filas ocupadas como se muestra a continuación:

vba promedios

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

3. Finalmente se obtiene este resultado mediante un mensaje:

resultado final promedios

 

Autor: Melissa Alarcón

31 Comments

  1. el funcionamiento de la funcion applitacion.worksheefunction.max se puede utilizar en la realizacion de formularios? Encontre la funcion =DMax(“[Freight]”, “Orders”, “[ShipRegion] = ‘CA'”), ambas funcionan igual???

  2. Podría escribirse esto quitando “Application”, es decir solo escribiendo de frente “Worksheet.Function.max……..”. he leido en algun lado que a veces esta funcion se sobrenetiende dentro de las instrucciones.?

  3. Esta funcion se puede realizar con un contador; es decir, colocar
    i=2 to fin ,
    O hay alguna ventaja programarla de esta manera.

  4. Me parece muy util el poder usar funciones ya conocidas del excel en el cod VBA y poder presentar los resultados en un mensaje emergente en la pantalla

  5. Muy importante, por ejemplo en el uso de tablas dinamicas de grandes dimensiones.

  6. Esta función es muy útil para mi trabajo como docente pues me permite conocer de manera inmediata el promedio de la notas de mis alumnos

  7. Se podría usar algun contador usando funciones for ??

    • Janira,
      Quizá se podría utilizar; sin embargo, al ser el rango de medida un rango fijo de notas no sería necesario. Como puedes observar con el comando (1), ya se actualiza el rango si es que se va a ingresar una nueva nota.

      fin = Cells(Rows.Count, 3).End(xlUp).Row………(1)
      max = Application.WorksheetFunction.max(Range(“C3:C” & fin))
      MsgBox “La nota máxima es: ” & (max)

      Espero clarar tu duda.

      Saludos

  8. Esta función me parece interesante por el message box que tiene la funcion. He replicado el código en la imagen; sin embargo, no entiendo el significado y el por qué colocamos “As Variant” y “As Integer”.

  9. Muy útli, aunque algo engorroso si no se tiene práctica en la programación en VBA…No seria más sencillo usar la función Máximo del Excel?

  10. Me parece una funcion interesante. Me gustaria saber de qué manera se define el rango de la funcion que en este caso es: “C3:C” & fin

    • Hola Samuel,

      El rango se define mediante una ‘unión’ empleando el ‘&’; es decir, dado que el número de alumnos por ciclo varía y la tabla puede ir aumentando o disminuyendo de tamaño (p.e. una tabla dinámica) es necesario que la macro siga funcionando sin requerir modificación. Es por ello que se define a ‘fin’ como el conteo de filas hasta la última de la tabla (fila 34 en el ejemplo) y así, al definir en ‘max’ el rango, se coloca:

      Range(“C3:C” & fin) ,

      Lo cual se interpreta como: Range(“C3:C34”).

  11. Sobre esta función por qué al momento de declarar fin se declara como una variable integer? en que casos uso este tipo y en que caso uso Variant?

  12. Sobre esta función por qué al momento de declarar fin se declara como una variable integer? en que casos uso este tipo y en que caso uso Variant?

  13. Intersante por el cuadro de dialogo que aparece. La duda es cual es la diferencia entre Variant e Integer.

  14. Esta función es muy útil sobre todo en el hecho de mostrar resultados en pantalla y con rapidez

  15. Para el ejemplo propuesto, la variable ‘max’ es declarada como Variant; sin embargo bastará con declararla como Integer, ya que la cantidad de alumnos en el primer ciclo no es tan extensa como para emplear el tipo Variant, el cual consume una mayor cantidad de memoria.

    Es importante tener cuidado en la declaración del tipo de variable, ya que mientras mayor memoria se consuma, se necesitará una mayor capacidad del equipo para correr la macro.

  16. Una muy buena función para sacar el número máximo, sería bueno también poder adecuarla para sacar el número mínimo y el promedio para dar mayor información a la persona que la use como por ejemplo el profesor.

  17. No entiendo el uso de Variant e Integer. Como debo interpretarlos?

  18. Funcion util para visualizar la nota maxima en una lista de notas, la Funcion para calcular la nota minima de la lista de notas seria:

    Sub minimo()

    Dim min As Variant
    Dim fin As Integer

    fin = Cells(Rows.Count, 3).End(xlUp).Row
    min = Application.WorksheetFunction.min(Range(“C3:C” & fin))
    MsgBox “La nota minima es: ” & (min)

    End Sub

    con este programa apareceria el mensaje indicando la nota minima.

  19. Es una función muy útil,especialmente si se manejan grandes cantidades de datos. Sin embargo, me gustaría saber si es posible aplicar esta misma función para hallar un máximo, pero en caso de que no se usen números enteros, sino porcentajes. Por ejemplo, para saber cual es el máximo acierto en %, como 20% o 50% en lugar de que aparezca 0.2 y 0.5 .

  20. Esta funcion es interesante tanto del maximo como el minimo, porque se podria aplicar para determinar los maximos y minimos de inventario en logistica.

  21. Creo q se define max como variant porque va utilizarse en varias celdas distintas, en tanto se define fin como entero xq hasta la ultima fila q tenga contenido.

  22. Creo que a max se pone variant porque se evaluará a varias celdas con dicha función, en tanto que fin va ser la última fila q tenga contenido.

  23. Modifique los datos y la macro seguía mencionando la nota mas alta.

    Saludos cordiales.

  24. Buenas tades,

    Cuando utilizo el código “=MAX(R[-9]C[-2]:R[22]C[-2])” ¿a que se refiere?.

  25. Esta función WORKSHEETFUNCTION.MAX me pareció muy interesante, al ser muy amigable especialmente para bases de datos enormes, no sólo para notas sino para todo tipo de archivos de tipo base de datos en los que se pueda evaluar un máximo. Me pregunto si algo similar es posible hacer para mínimos, promedios, desviación estándar y otros parámetros estadísticos, seguro que sí. Me queda la duda de los detalles, sobre el uso de “Variant” y “integer”.

  26. Cuando copie la rutina indicada en esta página VBA envió
    “Se ha producido el error 1004 en el tiempo de ejecución” en la línea siguiente:
    fin = Cells(Rows.Count, 3).End(x1Down).Row
    Tal vez podrían despejar mi duda

    Gracias

Deja un comentario

Required fields are marked *.


Excel Avanzado located at , Lima, Perú . Reviewed by usuarios rated: 4.7 / 5