J'ai environ 300 valeurs sur une feuille de calcul Excel (dont beaucoup sont nulles) et je souhaite calculer la moyenne en excluant les zéros, la valeur la plus élevée et la valeur la plus faible après zéro. Quelle serait la formule appropriée?
Merci d'avance.
edit: Ce que j'ai essayé jusqu'à présent
En supposant que mes valeurs soient en A1: A300, j’ai fait ce qui suit:
=AVERAGEIFS(A1:A100, A1:A100, "<>0", A1:A100, "<>SMALL(A1:A100, COUNTIF(A1: A100,0)+1)", A1:A100, "<>LARGE(A1: A100, COUNTIF(A1: A100))")
Il supprime avec succès les zéros, mais pas le maximum ni le minimum.
microsoft-excel
microsoft-excel-2010
spreadsheet
user3396592
la source
la source
SMALL(A1:A100, COUNTIF(A1: A100,0)+1)
n'est pas évalué mais considéré comme une chaîne. En utilisant&
résout au moins un problème: "" & lt; & gt; "& SMALL (A1: A100, COUNTIF (A1: A100,0) +1)".Réponses:
Je suppose que le résultat doit être imprimé dans une cellule sans utiliser d’autres cellules pour l’impression des résultats intermédiaires. Cela ne fonctionne probablement qu'avec des formules matricielles, du code VBA ou des requêtes de base de données (réponse de vembutech ).
Formules de tableau
Voir Instructions et exemples de formules matricielles et Créer une formule matricielle pour plus de détails.
Une solution
Dans mon exemple, les valeurs à calculer sont dans les cellules de la grille A1 à A11.
Cette formule résout le problème:
après l'avoir inséré, vous devez taper CTRL + DÉCALAGE + ENTRER (pas seulement ENTRER , voir Créer une formule matricielle ).
Idée derrière cette solution
le
AVERAGE
fonction (autre queAVERAGEA
) calcule la valeur moyenne de toutes les cellules contenant un nombre. Les cellules contenant une chaîne ou un booléen / logique sont ignorées. Nous allons: définir ces cellules sur "" (chaîne vide), ce qui correspond à 0, à la valeur de cellule minimale (0 exclu) ou à la valeur de cellule maximale. Fondamentalement, nous utilisons cette formule:Maintenant, nous devons remplacer le FAIRE par un certain contenu (les trois situations décrites). Ces trois situations sont testées par:
Le deuxième test est un peu délicat: nous voulons exclure le «0» (zéro) du calcul de la valeur minimale. le
MIN
fonction ignore toutes les valeurs autres que des nombres (par exemple, une chaîne vide ""). leIF($A$1:$A$11=0,"",$A$1:$A$11)
définit toutes les cellules sur "" qui sont égales à zéro. Toutes les cellules restantes conservent leurs valeurs d'origine.Maintenant, nous combinons les trois tests. Ceci est fait en mettant des parenthèses autour des trois tests et en les combinant par un
+
, ce qui représente une logiqueOR
.Ce test combiné est maintenant renseigné dans notre formule en haut, remplaçant
_TODO_
:Une autre solution
Basé sur utilisateur3396592 L'approche on peut aussi écrire:
la source
Espérons que le formulaire ci-dessous répondra à vos besoins,
Supposons, par exemple, que si vous avez 100 numéros de lignes zéro sur 300, cela ignorera les 100 lignes et calculera la moyenne pour les 200 lignes restantes.
la source
QUERY
fonctionne dans Excel 2010, pourriez-vous l'expliquer un peu plus?SELECT AVG(A) WHERE (A > 0) AND (A <> (SELECT MAX(A))) AND (A <> (SELECT MIN(A) WHERE A <> 0));
.