Condition pour faire une moyenne

Bonjour à vous les pro d'Excel

Je viens vers vous pour vous demander de l'aide car je suis un peu bloqué et j'aurai besoin d'explications sur comment faire.

Je me permets de mettre un fichier excel en pièce jointe et je vous invites à lire la suite en ayant le fichier excel sous vos yeux pour comprendre la situation

Pour vous mettre dans le contexte, je traite des images satellite, sur ces images j'extrais des "boites" de 3x3 pixel contenant des informations.

Je me retrouve alors sur excel avec des séries de 9 lignes (car 3x3= 9 pixels ) qui sont identifiées par un numéro qui correspond à un fichier.

Du coup, à chaque fois j'ai 9 lignes et sur mes colonnes j'ai l'informations qui m’intéresse pour plusieurs longueur d'onde.

Moi, ce que j'ai besoin de faire, c'est la moyenne des 9 pixels pour chaque colonne pour mes 9 lignes. Donc là, tout de suite je pense tableau croisé dynamique MAIS j'aurai besoin d'ajouter 2 conditions avant de faire la moyenne.

D'une part il faudrait que dans mes colonnes de valeurs, les nombres négatifs soient supprimés.

D'autres part, afin d'avoir une moyenne représentative de ce que je regarde, il faudrait que je fasse la moyenne uniquement si j'ai au moins 6 valeurs sur mes 9 valeurs (si je retire les valeurs négative et qu'il ne me reste que 2 valeurs sur les 9, faire la moyenne faussera le résultat).

Pour enlever les valeurs négative et les remplacer par rien, je n'arrive pas à le faire pour une seule case, la seule chose que j'arrive à faire c'est supprimer la ligne entière mais celle-ci contient des valeurs correct. Et je ne peux pas le faire à la main ça me prendrait beaucoup trop de temps.

Pour cette histoire de moyenne je ne sais pas si c'est possible sous excel, si vous avez une idée n'hésitez pas.

Voilà merci de votre attention et j'espère avoir été assez clair dans mon message.

Bonjour,

Une formule a tester :

R8 : =SI(NB.SI(F8:P8;">0")>=6;MOYENNE.SI(F8:P8;">0";F8:P8);"")

Bonjour,

Je pense que quelque chose comme ça t'irait :

Merci de me dire si tu souhaites des explications

Bonjour,

Merci pour vos réponses

Jean-Eric votre formule est intéressante mais ce n'est pas la moyenne de la ligne que je souhaite faire.

exemple moyenne

Sur la capture d'écran que j'ai mis en attaché, j'ai entouré mes valeurs où je dois faire la moyenne. Donc je souhaite faire la moyenne pour les autres colonnes et ensuite refaire la même chose pour mes 9 lignes suivantes désignées par les 1 et ensuite les 2 etc etc

Ausecour alors oui je veux bien des explications car j'ai quelques interrogations (surtout que je suis assez novice )

Quand je regarde dans votre fichier, le tableau avec les moyennes que vous avez ajouté, je vois qu'il est rempli en entier, hors dans mon tableaux de données dans le bas on peut voir par exemple pour ProdID 10 qu'il y a des colonnes avec uniquement des valeurs négative (mis en évidence en rouge). Donc il devrait avoir des cases vides dans votre tableau

De plus j'ai l'impression que les moyennes sont bizarres

Ausecour je viens de comprendre que les valeurs de votre tableau ne concerne que la première colonne

Et effectivement dans la première colonne il n'y a que le dernier "proid" qui ne rentre pas dans les conditions.

Cependant je suis toujours à votre écoute pour l'explication de votre formule

Re,

Je persévère !...

F63 : =SI(NB.SI.ENS($A$8:$A$160;$A163;F$8:F$160;">0")>5;MOYENNE.SI.ENS(F$8:F$160;$A$8:$A$160;$A163;F$8:F$160;">0");"")

Merci Jean-Eric, votre formule fonctionne aussi

Je tiens vraiment à vous remercier car je vais gagner un temps considérable.

Par contre j'accepte volontiers une explication de votre formule afin de comprendre ce qu'il se passe.

Merci

Bonjour,

Pas de soucis, c'est partis pour une petite explication en espérant que je n'explique pas quelque chose qui ne marche pas comme souhaité :

=SI(NB.SI.ENS($F$8:$F$160;">=0";$A$8:$A$160;$E163)>=6;MOYENNE.SI.ENS($F$8:$F$160;$F$8:$F$160;">=0";$A$8:$A$160;$E163);"")

Premièrement, on a 3 fonctions en tout :

=SI(NB.SI.ENS(F$8:F$160;">=0";$A$8:$A$160;$E163)>=6;MOYENNE.SI.ENS(F$8:F$160;F$8:F$160;">=0";$A$8:$A$160;$E163);"")

Je les ai mises en couleur pour une meilleure compréhension

Donc en rouge on a la fonction SI :

test logique : résultat de la fonction NB.SI.ENS est supérieur ou égal à 6

valeur si vrai : résultat de la fonction MOYENNE.SI.ENS

valeur si faux : rien

on va d'abord se pencher sur la fonction dans le test logique, NB.SI.ENS :

NB.SI.ENS(F$8:F$160;">=0";$A$8:$A$160;$E163)

plage critère1 : Plage de valeur sur laquelle on fera également notre moyenne

critère 1 : on veut compter uniquement les valeurs qui sont supérieures à 0

plage critère2 : La plage contenant les lignes

critère 2 : on ne veut compter que pour les valeurs qui correspondent à la ligne dont on veut obtener la moyenne

En clair, on compte toutes les cellules de la colonne qui ont une valeur supérieure à 0 et qui correspondent à notre ligne.

Ensuite, la valeur renvoyée si c'est vrai, la MOYENNE.SI.ENS :

MOYENNE.SI.ENS(F$8:F$160;F$8:F$160;">=0";$A$8:$A$160;$E163)

plage moyenne : plage sur laquelle on fera la moyenne, ici la colonne qui nous intéresse

Ensuite pour les critères, on met les même que pour le NB.SI.ENS, car on ne veut faire la moyenne que des valeurs de la ligne qui sont positives.

Et voilà!

Les $ servent ensuite à bloquer ce qui est nécessaire, j'en avais trop mis d'ailleurs, c'est pour ça que tes moyennes paraissaient bizarres, voici la versión corrigée :

Re,

Consulte l'aide d'Excel pour la compréhension des formules…

Cdlt.

Bonjour,

Merci pour les explications Ausecour c'est beaucoup plus clair pour moi, en espérant que ce soit utile à d'autres personnes

Et oui toutes les valeurs sont bonnes il n'y a aucun soucis là dessus

Encore une fois merci à vous.

Bonjour,

Je reviens vers vous car j'essaye à présent d'avoir l'écart type

J'ai eu beau essayer de reprendre la formule avec la moyenne et d'utiliser la fonction ECARTYPE avec des conditions SI mais je ne trouve pas

Si vous avez une idée je suis preneur.

Merci

Bonjour,

Pas besoin de m'envoyer un message privé pour que je revienne voir le sujet, le fórum s'occupe déjà de me faire une notification pour me dire qu'il y a un nouveau message ici

Malheureusement il n'existe pas de fonction ecarttypestandard.si.ens, il faut la bricoler par nous même

La seule différence dans la formule c'est que le si.ens est remplacé par un SI où on rassemble les résultats de deux tests, et on vérifie qu'ils retournent "VRAIVRAI" (un ET aurait été plus simple mais cette fonction ne renvoie qu'une valeur, toujours....), dans le cas où ils retournent "VRAIVRAI", on donne la valeur de la cellule, dans l'autre cas, on ne donne rien et la valeur est ignorée.

Les deux tests qui sont faits sont les mêmes que pour la fonction MOYENNE.SI.ENS, que la valeur soit supérieure à 0, et qu'elle soit sur la ligne qu'on calcule.

Je te joins le résultat :

J'en ai également profité pour corriger une grosse erreur que j'avais fait, tu as des lignes de 0 à 16 alors que je faisais les calculs pour les lignes de 1 à 16, en oubliant la ligne 0, je l'ai donc rajoutée.

Je te laisse voir et me dire si ça te convient

Petite note, je viens de tomber sur la fonction BDECARTYPE qui pourrait peut-être faire la fonction ECARTYPESTANDARD.SI.ENS mais je ne l'ai jamais utilisé...

Si tu veux essayer tu peux

Bonjour,

Merci pour vos réponses Ausecour.

Oui je me suis permis de vous envoyer un message privé car je me suis dit que comme j'avais mis mon sujet en résolu plus personne n'irait dessus et comme vous aviez déjà réfléchi à mon problème.. Enfin voilà, mais c'est vrai qu'il y a un système de notification

Et oui j'avais remarqué que la formule pour la moyenne commençait pour 1 et non 0 mais j'avais compris comment faire pour prendre en compte le 0

Je vais voir ce que vous m'avez conseillé pour l’écart type, je vous tiens au courant.

Bonjour,

C'était pour vous dire que tout fonctionne de mon côté

Encore une fois merci

Rechercher des sujets similaires à "condition moyenne"