Ne pas tenir compte des #N/A dans une moyenne matricielle à condition
Bonjour à tous,
Nouveau venu sur le forum, j'aurais besoin d'un petit coup de pouce pour une formule.
Je dispose d'un jeu de données avec plusieurs variables en colonne (36), et des données en lignes (36483 pour chaque variable). Ces données correspondent en fait à une valeur relevée toutes les 30 minutes. Il y a donc 48 lignes par jour. Je cherche à obtenir une moyenne pour chaque jour sans avoir à le faire manuellement.
Pour cela j'utilise la formule suivante:
{=MOYENNE(SI('data EC'!$I$4:$I$36483=Averages_calculations!$AI4;'data EC'!J$4:J$36483))}avec en colonne I le jour (1-x), en colonne AI une liste de 1 à x qui me permet de vérifier la condition, et en colonne J les données à moyenner.
Cette formule fonctionne parfaitement et j'obtiens bien ce que je souhaite (peut-être qu'il existe un moyen plus simple). Suite à ce calcul, je trace un graphique de l'évolution de ma variable en fonction du temps.
Là où réside mon problème, c'est que dans les données à moyenner il y a des valeurs absentes #N/A (beaucoup). Et du coup, lorsqu'il y a un #N/A dans mes 48 valeurs d'un jour, la formule renvoi "#N/A" au lieu de faire la moyenne sur les valeurs présentes.
Si je transforme les #N/A en une autre valeur (par exemple "nan"), la moyenne est bien calculée sans tenir compte des nan. Mais lorsque les 48 valeurs d'un jour sont en nan, la formule renvoi "#DIV/0!" ce qui se traduit par 0 sur le graphique.
Si je transforme les #N/A en cellule vide, lorsque les 48 valeurs d'un jour sont vides, la formule renvoi "0" ce qui se traduit par 0 sur le graphique aussi.
Je cherche donc à modifier ma formule afin que lorsque des #N/A sont présentes dans les 48 valeurs d'un jour, la moyenne soit tout de même calculée. J'ai trouvé des fonctions qui permettent de faire ça, mais je n'arrive pas du tout à l'intégrer dans ma formule.
Quelqu'un aurait-il une petite idée pour faire ça ?
Toutes mes excuses si mon explication n'est pas très claire. Je joins un échantillon du fichier pour plus de clarté.
Feuille 'data' en colonnes A les jours, B et C les valeurs (ici des flux de CH4); colonnes E-F les moyennes journalières et ensuite les graphiques (on voit ici les valeurs à 0, dues au "nan" dans les données de base).
Merci d'avance,
Noxi
Salutations !
J'ai regardé un peu ton jeu de données. Tout d'abord il existe la formule
Moyenne.si() qui fait directement ce que tu cherches à faire sans passer par une formule matricielle (Moins compliqué à traiter donc plus rapide pour des jeu de données importants
Mais le résultat renvoyé sera le même qu'avec ta méthode actuelle pour une simple et bonne raison : Ce que tu cherches à calculer n'existe pas mathématiquement parlant.
Pour comprendre prenons un exemple :
1) Sur tes 48 prises de valeurs de la journée, 2 ont foiré pour je ne sais quelle raison. Tu peux les ignorer et faire une moyenne avec les 46 valeurs qui restent. => ça excel sait faire...
2) Sur tes 48 prises de valeurs, aucune n'a fonctionné (les 48 lignes seront en #NA) Tu n'as donc aucune valeur pour cette journée... Tu ne peux donc pas faire de moyenne avec des infos que tu n'a pas ! Excel ne pourras donc rien faire.
En espérant avoir aidé un peu !
Girodo,
Bonjour à vous deux
si c'est les zéro qui te gênent, tu précède ta formule d'un sierreur()
=sierreur(ta formule;#N/A) et il n'y aura que les valeurs calculées sur ton graphique
Crdlmt
Bonjour à vous deux,
Je m'excuse pour le délais de ma réponse. Merci à vous d'avoir contribué.
DjiDji59430, cette solution fonctionne parfaitement pour supprimer les 0. Le résultat obtenu est exactement celui que je cherche.
Girodo, merci de m'avoir indiqué cette formule, néanmoins pour l'instant je n'ai pas réussi à l'adapter pour qu'elle fonctionne.. Mais effectivement avec la formule matricielle c'est très long sur le jeu de données complet.
Même si le résultat obtenu est le bon, maintenant j'ai mon jeu de données avec des "nan" et le tableau final avec des "#N/A" (vis à vis de la formule de Djidji59430.
Je vais chercher encore un peu pour appliquer MOYENNE.SI pour que la totalité soit harmonisée.
Merci
Noxi