Скользящее среднее в Excel VBA
Ниже мы рассмотрим программу в Excel VBA, который создает таблицу скользящую среднюю. Поместите командную кнопку на листе и добавьте следующую строку кода:
Range("B3").Value = WorksheetFunction.RandBetween(0, 100)
Эта строка кода вводит случайное число в диапазоне от 0 до 100 в ячейке B3. Мы хотим, чтобы Excel VBA принять новую стоимость акций и поместить его в первом положении скользящего среднего стола. Все остальные значения должны двигаться вниз на одно место, а последнее значение должно быть удалено.
Создание рабочего листа Изменить событие. Код добавлен в Worksheet Change Event будет выполняться Excel VBA при изменении ячейки на листе.
-
Откройте редактор Visual Basic.
-
Дважды щелкните на Sheet1 (Лист1) в окне Project Explorer.
-
Выберите рабочий лист из списка слева раскрывающегося списка. Выберите Изменить справа в раскрывающемся списке.
Добавьте следующие строки коды к планшетному Change Event:
-
Объявляет переменную с именем NewValue типа Integer и двух диапазонов (firstfourvalues и lastfourvalues).
Dim newvalue As Integer, firstfourvalues As Range, lastfourvalues As Range
-
Рабочий лист Change Event прослушивает все изменения на Лист1. Мы хотим только Excel VBA, чтобы сделать что-то, если что-то изменится в ячейке B3. Для достижения этой цели, добавьте следующую строку кода:
If Target.Address = "$B$3" Then
-
Мы инициализации NewValue со значением ячейки B3, firstfourvalues с Range ( «D3: D6») и lastfourvalues с Range ( «D4: D7»).
newvalue = Range("B3").Value Set firstfourvalues = Range("D3:D6") Set lastfourvalues = Range("D4:D7")
-
Теперь приходит простой трюк. Мы хотим, чтобы обновить таблицу скользящей средней. Вы можете добиться этого, заменив последние четыре значения с первых четырех значений таблицы и размещения новой стоимости акций в первой позиции.
lastfourvalues.Value = firstfourvalues.Value Range("D3").Value = newvalue
-
Не забудьте закрыть, если заявление.
End if
-
И, наконец, ввести формулу = Average (D3: D7) в ячейку D8.
-
Тестирование программы, нажав на кнопку команды.