/ / Rolling Average en Excel VBA

Rolling Average en Excel VBA

A continuación veremos un programa en Excel VBA que crea un tabla de promedio móvil. Coloque un botón de comando en su hoja de trabajo y agregue la siguiente línea de código:

Range("B3").Value = WorksheetFunction.RandBetween(0, 100)

Esta línea de código ingresa un número aleatorio entre 0y 100 en la celda B3. Queremos que Excel VBA tome el nuevo valor de stock y lo coloque en la primera posición de la tabla de promedio móvil. Todos los demás valores deben moverse hacia abajo en un lugar y el último valor debe eliminarse.

Tabla de Rolling Average en Excel VBA

Tabla de Rolling Average en Excel VBA

Crear un evento de cambio de hoja de trabajo. El código agregado al evento de cambio de la hoja de trabajo será ejecutado por Excel VBA cuando cambie una celda en una hoja de trabajo.

1. Abra el Editor de Visual Basic.

2. Haga doble clic en Sheet1 (Sheet1) en el Explorador de proyectos.

3. Elija la hoja de trabajo de la lista desplegable de la izquierda. Elija Cambiar en la lista desplegable de la derecha.

Evento de cambio de hoja de cálculo en Excel VBA

Agregue las siguientes líneas de código al evento de cambio de hoja de trabajo:

4. Declare una variable llamada newvalue de tipo Integer y dos rangos (primero cuatro valores y últimos cuatro valores).

Dim newvalue As Integer, firstfourvalues As Range, lastfourvalues As Range

5. El evento de cambio de la hoja de trabajo escucha todos los cambios en la Hoja1. Solo queremos que Excel VBA haga algo si algo cambia en la celda B3. Para lograr esto, agregue la siguiente línea de código:

If Target.Address = "$B$3" Then

6. Inicializamos newvalue con el valor de la celda B3, los primeros cuatro valores con Range ("D3: D6") y los últimos cuatro valores con Range ("D4: D7").

newvalue = Range("B3").Value
Set firstfourvalues = Range("D3:D6")
Set lastfourvalues = Range("D4:D7")

7. Ahora viene el truco simple. Queremos actualizar la tabla de media móvil. Puede lograr esto reemplazando los últimos cuatro valores con los primeros cuatro valores de la tabla y colocando el nuevo valor de stock en la primera posición.

lastfourvalues.Value = firstfourvalues.Value
Range("D3").Value = newvalue

8. No te olvides de cerrar la sentencia if.

End if

9. Finalmente, ingrese la fórmula = MEDIA (D3: D7) en la celda D8.

10. Pruebe el programa haciendo clic en el botón de comando.

Lea también: