miércoles, 26 de marzo de 2014

Ejecutar el promedio de un grupo de números varias veces


La semana pasada me escribieron, preguntado lo siguiente:

"Tengo una columna en Excel de 70000 datos, todos números naturales, y me gustaría ir promediando cada 20 datos, sin repetir los que se van sumando es decir: toma los primeros 20, los promedia, se obtiene el nuevo valor, y prosigue con los otros 20 siguientes y así hasta que llegue a el dato 70000! Agradezco tu ayuda!"
En la medida de mis posibilidades intento responder rápidamente las consultas que me hacen, sin embargo, esta semana he estado mas ocupado que baño de mercado central, y por ello no tuve tiempo de hacerlo antes.

Pero como indica el dicho: "Mas vale tarde que nunca", hay otro dicho "Mas sabe el diablo por Facebook que por diablo", aquí va la respuesta:

En una hoja de Excel, coloque valores numéricos aleatorios de la siguiente manera:
Para encontrar la solución mas rápida utilice Macros en Excel. Para ello presionamos ALT + F11 y aparecerá el Visual Basic.
En el menú Insertar, seleccionamos la opción Módulo:

Y luego a continuación copiamos el siguiente código:

Sub Promediototal()

Cantidad = InputBox("Ingrese la cantidad de numeros que desea promediar en cada bloque")

finlin = ActiveSheet.Cells(65000, 1).End(xlUp).Row

Range("A1").Select

Do While ActiveCell.Row <= finlin
    Suma = 0
    Promedio = 0
    
    For x = 1 To Cantidad
        Suma = Val(ActiveCell) + Suma
        ActiveCell.Offset(1, 0).Select
    Next x
    
    Promedio = Suma / Cantidad
    ActiveCell.Offset(-1, 1) = Promedio
Loop

End Sub

Este proceso primero me pregunta cada cuantos números vamos a promediar. En el caso indicado, se dice que cada 20 números se sacará el promedio.

Cerramos el Visual Basic, y en el Excel nos vamos a la etiqueta Vista, el último botón dice Macros, hacemos clic en él, y luego seleccionamos la macros PromedioTotal, y hacemos clic en Ejecutar.
Colocaremos en este caso el número 20 y luego hacemos clic en Aceptar
La macros me devolverá el promedio cada 20 números y lo colocará a la par:

Espero que les sirva

Saludos

Ing. Enrique Neciosup Morales