Con la función WorksheetFunction.Average Excel devuelve el promedio aritmético de una lista de datos o argumentos.
La sintaxis para utilizar la función sigue la lógica de considerar todos los valores que quieren ser usados para hallar el promedio. Se puede codificar de la siguiente manera:
= expression.Average (Arg1, arg2, arg3, … arg255)
Para poder aplicar esta función usaremos el ejemplo de una cadena de locales de venta de Frozen Yogurt. Lo que se plantea es poder hallar el ticket promedio diario de consumo de uno de los locales de la cadena.
Para ello necesitamos contar con la lista de transacciones realizadas durante el día por dicho local. En la hoja de cálculo figuran los montos consumidos en el local.
Los montos son los siguientes
Se creó un formulario que muestra tres botones: Calcular, Limpiar y Cerrar.
El código usado es el siguiente:
Private Sub CommandButton1_Click()
TextBox1.Value = Application.WorksheetFunction.Average(Range(Cells(3, 2), Cells(13, 2)))
End Sub
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub
Private Sub CommandButton3_Click()
TextBox1 = ""
End Sub
El valor resultante es el consumo promedio de los clientes del local durante un día.
Rocío Abad Vergara
06/08/2013 a las 9:44 am
Me parece bueno este formulario, pero esta Macro solo se limita a un numero fijo de clientes.
01/11/2013 a las 2:40 pm
Me parece interesante el uso de este formulario. Para solucionar el problema del numero fijo de clientes puede usar un rango mayor de lo usual, por ejemplo en una negocio el dueño sabe que la cantidad de gente que acude a su negocio puede variar de 1 a 100 personas diarias. Aun así, puedes crear una formula para que se obtenga el promedio de 1000 celdas o 1000 clientes. =).
Sub Macro1()
'
' Macro1 Macro
'
' Acceso directo: CTRL+a
'
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-7]C[-3]:R[992]C[-3])"
Range("A1").Select
End Sub
11/04/2014 a las 7:47 pm
Una aclaración:
La utilización de esta función en el ejemplo se utiliza dentro del UserForm1.
11/04/2014 a las 8:00 pm
Esta función es bastante útil ya que en muchas ocasiones se desea calcular el promedio de un conjunto de datos, ya sea para tareas sencillas como devolver, por ejemplo, el promedio de notas de un alumno dentro de una macro simple con una cantidad de alumnos establecida y cuyo resultado se muestra directamente en la hoja; o como parte de una macro más compleja que tenga un proceso de cálculo mas elaborado y que necesite calcular el promedio de un conjunto de datos como parte de todo el proceso. Sea cual sea el escenario la función AVERAGE es un herramienta muy útil en la elaboración de un macro.
26/07/2014 a las 11:27 pm
Se puede aplicar al promedio de notas, como la tarea de esta semana. Tenemos 5 notas de 5 puntos cada una y 1 se elimina, la mas baja. Podriamos hacer lo sgt.
suma de las notas - MIN()
Y en terminos de promedio asi:
(suma de notas - MIN())/4
01/08/2014 a las 8:18 pm
Funcion util aplicable a un negocio que permite calcular el ticket promedio, tambien se puede utilizar para promediar otros datos numericos.
02/08/2014 a las 8:33 am
Es una funcion practica y sencilla para calcular el ticket promedio del dia, de la semana, del mes etc, que se calcula en todo negocio retail, es muy practico.
03/09/2014 a las 11:15 am
¿Cómo se podría aplicar esta función para más datos?
05/09/2014 a las 11:21 pm
Esta función es muy útil para los negocios, supongo que también puede ser utilizado para cualquier dato numérico en una lista.
08/09/2014 a las 5:14 pm
Entiendo que es una manera de aplicar, las formulas de excel intermedio.
17/10/2018 a las 12:44 pm
¿hay forma de hacer la aplicación de la función a un numero de celdas desconocido usando Selection.End(xlDown).Select?
01/12/2021 a las 9:08 pm
Solucion, antes de ejecutar el formulario seleccionar las celdas y cambiar por esto
Rng = Selection.Address
Textbox1.Value = Application.WorksheetFunction.Average(ActiveSheet.Range(Rng))
Así se podrá unicamente seleccionar el rango a promediar, puede ser desde dos celas hasta veinticcuatromilmillonesnovecientostreitayunmilmillonesdemilesdemillones... jajaja...