Comment calculer la moyenne pondérée en VBA (avec exemple)
Vous pouvez utiliser la syntaxe de base suivante pour calculer une moyenne pondérée à l’aide de VBA :
Sub FindWeightedAverage()
Range("E2") = _
WorksheetFunction.SumProduct(Range("B2:B7"), Range("C2:C7")) / _
WorksheetFunction.Sum(Range("C2:C7"))
End Sub
Cet exemple particulier calcule une moyenne pondérée en utilisant les cellules de la plage B2:B7 comme valeurs et les cellules de la plage C2:C7 comme pondérations.
La moyenne pondérée est ensuite affichée dans la cellule E2 .
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : calculer la moyenne pondérée à l’aide de VBA
Supposons que nous ayons l’ensemble de données suivant dans Excel qui montre diverses ventes réalisées par les employés d’une entreprise :
Supposons que nous souhaitions calculer la moyenne pondérée du prix, en utilisant les valeurs de la colonne Montant comme valeurs et les valeurs de la colonne Prix comme pondérations :
Nous pouvons créer la macro suivante pour ce faire :
Sub FindWeightedAverage()
Range("E2") = _
WorksheetFunction.SumProduct(Range("B2:B7"), Range("C2:C7")) / _
WorksheetFunction.Sum(Range("C2:C7"))
End Sub
Lorsque nous exécutons cette macro, nous recevons le résultat suivant :
Notez que la cellule E2 contient une valeur de 9.705882 .
Nous pouvons vérifier que cela est correct en calculant manuellement la moyenne pondérée.
Rappelons que nous utilisons la formule suivante pour la moyenne pondérée :
Moyenne pondérée = Σw i X i / Σw i
où:
- w i = les valeurs de poids
- X i = les valeurs des données
Nous pouvons intégrer les valeurs de notre ensemble de données dans cette formule pour calculer la moyenne pondérée du prix :
- Moyenne pondérée = Σw i X i / Σw i
- Moyenne pondérée = (1*8 + 3*5 + 2*6 + 2*7 + 5*12 + 4*14) / (1+3+2+2+5+4)
- Moyenne pondérée pour l’étudiant A = 9,705882
Cela correspond à la valeur que nous avons calculée à l’aide de la macro.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :
VBA : Comment écrire des fonctions AVERAGEIF et AVERAGEIFS
VBA : Comment écrire des fonctions SUMIF et SUMIFS
VBA : Comment écrire les fonctions COUNTIF et COUNTIFS