Vba: jak pisać funkcje średnia.jeżeli i średnia.jeżeli
Do pisania funkcji ŚREDNIA JEŻELI i ŚREDNIA JEŻELI przy użyciu języka VBA w programie Excel można użyć następujących metod:
Metoda 1: Funkcja ŚREDNIA JEŻELI w VBA
Sub Averageif_Function()
Range(" E2 ") = WorksheetFunction.AverageIf(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
W tym konkretnym przykładzie obliczona zostanie średnia wartość w zakresie B2:B12 , gdzie odpowiadająca wartość w zakresie A2:A12 jest równa „Mavs”, a następnie przypisze wynik do komórki E2 .
Metoda 2: Funkcja AVERAGEIFS w VBA
Sub Averageifs_Function()
Range(" E2 ") = WorksheetFunction.AverageIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
W tym konkretnym przykładzie obliczona zostanie średnia wartość w zakresie C2:C12, gdzie wartość w zakresie A2:A12 jest równa „Mavs” , a wartość w zakresie B2:B12 jest większa niż 20, a następnie przypisz wynik do komórki E2 . .
Poniższe przykłady pokazują, jak zastosować każdą z tych metod w praktyce z następującym zbiorem danych w Excelu, który zawiera informacje o różnych koszykarzach:
Przykład 1: Funkcja ŚREDNIAJEŻELI w VBA
Załóżmy, że chcemy obliczyć średnią wartość w kolumnie punktów dla zawodników drużyny Mavs.
Możemy utworzyć następujące makro, aby wykonać tę funkcję AVERAGEIF:
Sub Averageif_Function()
Range(" E2 ") = WorksheetFunction.AverageIf(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Zauważ, że komórka E2 zawiera wartość 18,25 .
To mówi nam, że średnia wartość w kolumnie punktów dla zawodników drużyny Mavs wynosi 18,25.
Możemy sprawdzić, czy jest to prawidłowe, ręcznie obliczając średnią wartość punktów gracza na Mavs:
Średnia punktów gracza Mavs: (22 + 10 + 29 + 12) / 4 = 18,25 .
Przykład 2: Funkcja AVERAGEIFS w VBA
Załóżmy, że chcemy obliczyć średnią wartość w kolumnie asyst dla zawodników spełniających następujące kryteria:
- Gracz jest częścią zespołu Mavs.
- Zawodnik zdobył ponad 20 punktów.
Możemy utworzyć następujące makro, aby wykonać tę funkcję AVERAGEIFS:
Sub Averageifs_Function()
Range(" E2 ") = WorksheetFunction.AverageIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Zauważ, że komórka E2 zawiera wartość 9 .
To mówi nam, że średnia asyst wśród zawodników drużyny Mavs , którzy zdobyli więcej niż 20 punktów, wynosi 9.
Uwaga : w tym przykładzie utworzyliśmy funkcję AVERAGEIFS przy użyciu dwóch zakresów kryteriów, ale w metodzie WorksheetFunction.AverageIfs można użyć dowolnej liczby zakresów kryteriów.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
VBA: Jak obliczyć średnią wartość zakresu
VBA: Jak pisać funkcje SUMIF i SUMIFS
VBA: Jak pisać funkcje COUNTIFS i COUNTIFS