AVERAGEIF (MOYENNE.SI dans un Google Sheets en français) renvoie la moyenne des valeurs d'une plage qui remplissent une condition. C'est ainsi que l'on trouve le panier moyen d'une région, la note moyenne d'une classe ou la moyenne de tout ce qui dépasse un seuil.
Syntaxe
=AVERAGEIF(criteria_range, criterion, [average_range])
criteria_range: Les cellules à comparer au critère.criterion: La condition qu'une cellule doit remplir.average_range[Facultatif] : Les cellules dont on calcule la moyenne. Si omis,AVERAGEIFfait la moyenne des cellules decriteria_rangeelles-mêmes.
Notez l'ordre des arguments : la plage de test vient en premier, puis le critère, puis la plage à moyenner, dans le même ordre que SUMIF.
Exemples de base
Avec les régions en A2:A100 et les ventes en B2:B100 :
=AVERAGEIF(A2:A100, "Nord", B2:B100)
Renvoie la vente moyenne de la région Nord.
=AVERAGEIF(B2:B100, ">0")
Ne fait la moyenne que des nombres positifs. Comme il n'y a pas d'average_range, les mêmes cellules sont testées et moyennées. C'est un moyen pratique d'ignorer les zéros.
=AVERAGEIF(B2:B100, ">=" & E1)
Fait la moyenne des valeurs supérieures ou égales au nombre de E1.
Écrire les critères
- Texte ou nombre exact :
"Nord",5ou"=5" - Comparaison :
">100","<=50","<>0" - Caractères génériques :
"Gad*","*corp","?adget" - Vide / non vide :
""et"<>" - Opérateur plus une cellule :
">" & E1
La comparaison de texte ne tient pas compte de la casse.
Ce qui est ignoré
AVERAGEIF ne fait la moyenne que des nombres parmi les cellules correspondantes. Le texte et les cellules vides de average_range sont ignorés, et non comptés comme des zéros. C'est différent de saisir 0 : une cellule contenant 0 est un nombre et fait baisser la moyenne.
L'erreur #DIV/0!
Si aucune cellule ne remplit la condition, il n'y a rien à moyenner et AVERAGEIF renvoie #DIV/0!. Gérez-la avec IFERROR :
=IFERROR(AVERAGEIF(A2:A100, E1, B2:B100), "Pas de données")
Plusieurs conditions : AVERAGEIFS
AVERAGEIF n'accepte qu'une seule condition. Pour en avoir plusieurs, utilisez AVERAGEIFS, où la plage à moyenner vient en premier :
=AVERAGEIFS(B2:B100, A2:A100, "Nord", C2:C100, ">=" & DATE(2026, 1, 1))
Cette formule fait la moyenne des ventes de la région Nord à partir du 1er janvier 2026. Notez que l'ordre des arguments diffère de AVERAGEIF, tout comme SUMIFS diffère de SUMIF.
Formules pratiques
Moyenne par catégorie dans un tableau de synthèse
Avec les noms de catégories en E2:E6 :
=AVERAGEIF($A$2:$A$100, E2, $B$2:$B$100)
Étirez-la vers le bas pour obtenir une moyenne par catégorie.
Moyenne hors d'une catégorie
=AVERAGEIF(A2:A100, "<>Interne", B2:B100)
Moyenne des valeurs supérieures ou inférieures à la moyenne générale
=AVERAGEIF(B2:B100, ">" & AVERAGE(B2:B100))
Problèmes courants
#DIV/0!. Aucune cellule numérique correspondante. Vérifiez l'orthographe du critère, les espaces en fin de texte et si les cellules à moyenner sont bien des nombres et non du texte.- Le résultat semble faux. Les zéros sont inclus dans la moyenne. Utilisez
">0"comme second critère avecAVERAGEIFSsi vous voulez les exclure. - Plages décalées.
criteria_rangeetaverage_rangedoivent avoir la même taille et commencer sur la même ligne. Un décalage fausse la correspondance. - Nombres stockés comme du texte. Les valeurs de texte dans
average_rangesont ignorées : la moyenne peut donc porter sur moins de cellules que vous ne le pensez. Convertissez les données en nombres. - Moyennes pondérées.
AVERAGEIFtraite toutes les lignes de la même façon. Pour une moyenne pondérée, utilisezSUMPRODUCT(valeurs, poids) / SUM(poids).
AVERAGEIF, AVERAGE, QUERY ou tableau croisé dynamique ?
Utilisez AVERAGE pour une moyenne sans condition et AVERAGEIF pour une seule condition. Pour des moyennes sur de nombreuses catégories à la fois, un tableau croisé dynamique ou une QUERY avec group by et avg() est plus simple qu'une colonne de formules AVERAGEIF.
Questions fréquentes
AVERAGEIF tient-elle compte de la casse ? Non.
AVERAGEIF compte-t-elle les cellules vides comme zéro ? Non. Les cellules vides et le texte de la plage à moyenner sont ignorés.
Peut-on utiliser AVERAGEIF avec des dates ? Oui : =AVERAGEIF(A2:A100, ">=" & DATE(2026, 1, 1), B2:B100).
Quelle différence entre AVERAGEIF et AVERAGEIFS ? Une seule condition contre plusieurs, et AVERAGEIFS prend la plage à moyenner en premier.
Fonctions associées
AVERAGE: Calcule la moyenne d'un ensemble de nombres.SUMIF: Additionne les cellules qui remplissent une condition.COUNTIF: Compte les cellules qui remplissent une condition.SUMIFS: Additionner avec plusieurs conditions.QUERY: Regrouper et moyenner des données avec une syntaxe de type SQL.