Як обчислити зважене середнє у 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: як написати функції AVERAGEIF і AVERAGEIFS
VBA: як написати функції SUMIF і SUMIFS
VBA: як написати функції COUNTIF і COUNTIFS