Як обчислити зважене середнє у 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *