A continuación vamos a ver un programa en Excel VBA que crea una tabla de promedio móvil. Coloque un botón de comando en la hoja de trabajo y añadir la línea de código siguiente:

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

Esta línea de código entra en un número aleatorio entre 0 y 100 en la celda B3. Queremos Excel VBA para tomar el nuevo valor de las acciones y lo coloca en la primera posición de la tabla de promedio móvil. Todos los demás valores deben bajar un lugar y el último valor se deben eliminar.

Rolling Average Table in Excel VBA

Rolling Average Table in Excel VBA

Crear un evento de cambio de hoja de cálculo. Código añadido al evento de cambio de hoja de trabajo será ejecutado por Excel VBA cuando se cambia una celda en una hoja de cálculo.

  1. Abra el Editor de Visual Basic.

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

  3. Seleccione la hoja de trabajo de la lista desplegable izquierda. Elija el Cambio de la lista desplegable de la derecha.

Worksheet Change Event in Excel VBA

Añadir las siguientes líneas de código en el evento de cambio de hoja de cálculo:

  1. Declarar una variable llamada nuevovalor de tipo entero y dos rangos (firstfourvalues ​​y lastfourvalues).

Dim newvalue As Integer, firstfourvalues As Range, lastfourvalues As Range
  1. La hoja de evento de cambio de escucha a todos los cambios en la Hoja 1. Sólo queremos Excel VBA para hacer algo si algo cambia en la celda B3. Para lograr esto, añada la siguiente línea de código:

If Target.Address = "$B$3" Then
  1. inicializar nuevovalor con el valor de la celda B3, firstfourvalues ​​con Range ( «D3: D6») y con lastfourvalues ​​Range ( «D4: D7»).

newvalue = Range("B3").Value

Set firstfourvalues = Range("D3:D6")

Set lastfourvalues = Range("D4:D7")
  1. Ahora viene el truco sencillo. Queremos actualizar la tabla de promedio móvil. Esto se puede conseguir mediante la sustitución de los últimos cuatro valores con los primeros cuatro valores de la tabla y colocar el nuevo valor de las acciones en la primera posición.

lastfourvalues.Value = firstfourvalues.Value

Range("D3").Value = newvalue
  1. No se olvide de cerrar la instrucción if.

End if
  1. Por último, introduzca la fórmula = PROMEDIO (D3: D7) en la celda D8.

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