Как рассчитать средневзвешенное значение в vba (с примером)
Вы можете использовать следующий базовый синтаксис для расчета средневзвешенного значения с помощью VBA:
Sub FindWeightedAverage()
Range(" E2 ") = _
WorksheetFunction.SumProduct(Range(" B2:B7 "), Range(" C2:C7 ")) / _
WorksheetFunction.Sum(Range(" C2:C7 "))
End Sub
В этом конкретном примере вычисляется средневзвешенное значение, используя ячейки в диапазоне B2:B7 в качестве значений и ячейки в диапазоне C2:C7 в качестве весов.
Затем средневзвешенное значение отображается в ячейке E2 .
В следующем примере показано, как использовать этот синтаксис на практике.
Пример. Вычисление средневзвешенного значения с помощью VBA
Допустим, у нас есть следующий набор данных в Excel, который показывает различные продажи сотрудников компании:
Предположим, мы хотим рассчитать средневзвешенное значение цены, используя значения в столбце «Сумма» в качестве значений, а значения в столбце «Цена» в качестве весов:
Для этого мы можем создать следующий макрос:
Sub FindWeightedAverage()
Range(" E2 ") = _
WorksheetFunction.SumProduct(Range(" B2:B7 "), Range(" C2:C7 ")) / _
WorksheetFunction.Sum(Range(" C2:C7 "))
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что ячейка E2 содержит значение 9,705882 .
Мы можем убедиться, что это правильно, вручную рассчитав средневзвешенное значение.
Помните, что мы используем следующую формулу для средневзвешенного значения:
Средневзвешенное значение = Σw i X i / Σw i
Золото:
- w i = значения веса
- X i = значения данных
Мы можем подставить значения из нашего набора данных в эту формулу, чтобы рассчитать средневзвешенную цену:
- Средневзвешенное значение = Σw i X i / Σw i
- Средневзвешенное значение = (1*8 + 3*5 + 2*6 + 2*7 + 5*12 + 4*14) / (1+3+2+2+5+4)
- Средний балл ученика А = 9,705882
Это соответствует значению, которое мы рассчитали с помощью макроса.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: Как написать функции СРЗНАЧЕСЛИ и СРЗНАЧЕСЛИФС
VBA: как писать функции СУММЕСЛИ и СУММЕСЛИ
VBA: как писать функции COUNTIF и COUNTIFS