VBA : Comment écrire des fonctions AVERAGEIF et AVERAGEIFS
Vous pouvez utiliser les méthodes suivantes pour écrire des fonctions AVERAGEIF et AVERAGEIFS à l’aide de VBA dans Excel :
Méthode 1 : fonction AVERAGEIF dans VBA
Sub Averageif_Function()
Range("E2") = WorksheetFunction.AverageIf(Range("A2:A12"), "Mavs", Range("B2:B12"))
End Sub
Cet exemple particulier calculera la valeur moyenne dans la plage B2:B12 où la valeur correspondante dans la plage A2:A12 est égale à « Mavs », puis attribuera le résultat à la cellule E2 .
Méthode 2 : fonction AVERAGEIFS dans VBA
Sub Averageifs_Function()
Range("E2") = WorksheetFunction.AverageIfs(Range("C2:C12"), Range("A2:A12"), "Mavs", Range("B2:B12"), ">20")
End Sub
Cet exemple particulier calculera la valeur moyenne dans la plage C2:C12 où la valeur dans la plage A2:A12 est égale à « Mavs » et la valeur dans la plage B2:B12 est supérieure à 20, puis attribuera le résultat à la cellule E2 . .
Les exemples suivants montrent comment utiliser chacune de ces méthodes en pratique avec l’ensemble de données suivant dans Excel qui contient des informations sur divers joueurs de basket-ball :
Exemple 1 : fonction AVERAGEIF dans VBA
Supposons que nous souhaitions calculer la valeur moyenne dans la colonne des points pour les joueurs faisant partie de l’équipe Mavs.
Nous pouvons créer la macro suivante pour exécuter cette fonction AVERAGEIF :
Sub Averageif_Function()
Range("E2") = WorksheetFunction.AverageIf(Range("A2:A12"), "Mavs", Range("B2:B12"))
End Sub
Lorsque nous exécutons cette macro, nous recevons le résultat suivant :
Notez que la cellule E2 contient une valeur de 18,25 .
Cela nous indique que la valeur moyenne dans la colonne des points pour les joueurs de l’équipe Mavs est de 18,25.
Nous pouvons vérifier que cela est correct en calculant manuellement la valeur moyenne des points des joueurs sur les Mavs :
Points moyens des joueurs Mavs : (22 + 10 + 29 + 12) / 4 = 18,25 .
Exemple 2 : fonction AVERAGEIFS dans VBA
Supposons que nous souhaitions calculer la valeur moyenne dans la colonne des passes décisives pour les joueurs qui répondent aux critères suivants :
- Le joueur fait partie de l’équipe Mavs.
- Le joueur a marqué plus de 20 points.
Nous pouvons créer la macro suivante pour exécuter cette fonction AVERAGEIFS :
Sub Averageifs_Function()
Range("E2") = WorksheetFunction.AverageIfs(Range("C2:C12"), Range("A2:A12"), "Mavs", Range("B2:B12"), ">20")
End Sub
Lorsque nous exécutons cette macro, nous recevons le résultat suivant :
Notez que la cellule E2 contient la valeur 9 .
Cela nous indique que la moyenne des passes décisives parmi les joueurs qui font partie de l’équipe Mavs et qui ont marqué plus de 20 points est de 9.
Remarque : Dans cet exemple, nous avons créé une fonction AVERAGEIFS en utilisant deux plages de critères mais vous pouvez utiliser autant de plages de critères que vous le souhaitez dans la méthode WorksheetFunction.AverageIfs .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :
VBA : Comment calculer la valeur moyenne de la plage
VBA : Comment écrire des fonctions SUMIF et SUMIFS
VBA : Comment écrire les fonctions COUNTIF et COUNTIFS