Jak obliczyć średnią ważoną w vba (z przykładem)


Do obliczenia średniej ważonej za pomocą języka VBA można użyć następującej podstawowej składni:

 Sub FindWeightedAverage()

Range(" E2 ") = _
    WorksheetFunction.SumProduct(Range(" B2:B7 "), Range(" C2:C7 ")) / _
    WorksheetFunction.Sum(Range(" C2:C7 "))

End Sub

W tym konkretnym przykładzie obliczana jest średnia ważona przy użyciu komórek z zakresu B2:B7 jako wartości i komórek z zakresu C2:C7 jako wag.

Średnia ważona jest następnie wyświetlana w komórce E2 .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Oblicz średnią ważoną za pomocą języka VBA

Załóżmy, że mamy w Excelu następujący zestaw danych, który pokazuje różne sprzedaże dokonane przez pracowników firmy:

Załóżmy, że chcemy obliczyć średnią ważoną ceny, wykorzystując wartości z kolumny Kwota jako wartości i wartości z kolumny Cena jako wagi:

W tym celu możemy utworzyć następujące makro:

 Sub FindWeightedAverage()

Range(" E2 ") = _
    WorksheetFunction.SumProduct(Range(" B2:B7 "), Range(" C2:C7 ")) / _
    WorksheetFunction.Sum(Range(" C2:C7 "))

End Sub

Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:

Zauważ, że komórka E2 zawiera wartość 9,705882 .

Możemy sprawdzić, czy jest to prawidłowe, ręcznie obliczając średnią ważoną.

Pamiętaj, że na średnią ważoną stosujemy następujący wzór:

Średnia ważona = Σw i X i / Σw i

Złoto:

  • w i = wartości wagowe
  • X i = wartości danych

Możemy podłączyć wartości z naszego zbioru danych do tego wzoru, aby obliczyć średnią ważoną cenę:

  • Średnia ważona = Σw i X i / Σw i
  • Średnia ważona = (1*8 + 3*5 + 2*6 + 2*7 + 5*12 + 4*14) / (1+3+2+2+5+4)
  • Średnia ocen ucznia A = 9,705882

Odpowiada to wartości obliczonej za pomocą makra.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:

VBA: Jak napisać funkcje ŚREDNIA.JEŻELI i ŚREDNIA.JEŻELI
VBA: Jak pisać funkcje SUMIF i SUMIFS
VBA: Jak pisać funkcje COUNTIFS i COUNTIFS

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *