MOYENNE.SI et Fonction Filtre

Bonjour à tous,

J'utilise la fonction filtre dans ce petit tableau. Le filtre se fait sur le nom de la personne, l'activité qui doit être =1, effectué qui doit être =1 et les dates comprises entre le 1er et le 31 octobre. Je n'ai aucun problème ensuite pour utiliser la fonction somme ou moyenne mais impossible d'utiliser moyenne.si. Or, je voudrais faire la moyenne uniquement pour les données >0. Le résultat serait alors de 5 et non de 2,1.

Savez-vous comment faire ?

Merci pour votre aide.

9question4.xlsx (19.20 Ko)

Bonsoir à tous !

Une proposition ?

=LET(
p;CHOISIRCOLS(Tableau;EQUIVX($A$2;Tableau[#En-têtes];0));
MOYENNE(FILTRE(p;(Tableau[Activité]=1)*(Tableau[Effectué]=1)*(Tableau[Date]>=$B2)*(Tableau[Date]<$C2)*(p<>0);0))
)

Merci, cela fonctionne effectivement ! Mais j'avoue ne pas bien comprendre pourquoi ni comment...

Bonne journée

Bonjour à tous !

Pour un résultat conforme à vos souhaits, il est nécessaire d'exclure les éléments 0 du champ à filtrer.

Afin d'éviter une redondance, une variable "p" a été insérée afin d'y loger le vecteur de ce champ (Michel ou Paul dans votre exemple).

Bonjour à tous,

Un essai non concluant à partir de la formule de Arpej, que je ne comprends pas...

Un peu comme ce sujet : ASSEMB.V

13question4-1.xlsx (19.79 Ko)

Bonjour à tous !

Généralement les fonctions en .SI ont besoin de s'accrocher à des plages réelles. Quand elles ont intégrées dans un LET, elles opèrent sur une plage virtuelle et provoquent une erreur.

RE,

Merci pour l'info !

Effectivement, j'ai eu le même souci il y a peu avec NB.SI... En revanche, SOMME.SI fonctionne...

Il faut tester et re tester

Merci à tous pour vos explications, j'ai compris l'utilité du LET !

Mais compliquons la donne 😉

J'ai en réalité 2 tableaux, je souhaite extraire les données d'un premier tableau selon certains critères et les données d'un second tableau avec certains critères et faire la moyenne de toutes ces données.

Pour un tableau je passe par le filtre pour sélectionner mes critères

Pour l'autre un SI.ENS

Comment faire ensuite pour faire la moyenne ? (cf fichier joint)

Merci beaucoup.

8question4.xlsx (38.32 Ko)

Bonjour à tous de nouveau !

Une proposition ?

=LET(
    p; CHOISIRCOLS(Tableau; EQUIVX(A2; Tableau[#En-têtes]; 0));
    _f1; FILTRE(p; (Tableau[Activité] = 1) * (Tableau[Effectué] = 1) * (Tableau[Date] >= B2) * (Tableau[Date] < C2) * (p <> 0); 0);
    _f2; FILTRE(G5:G737; (TEXTE(I5:I737; "aaaamm") = TEXTE(B2; "aaaamm")) * (H5:H737 = 1) * (J5:J737 = "Oui") * (K5:K737 = A2));
    MOYENNE(ASSEMB.V(_f1; _f2))
)

Note : Il serait judicieux d'insérer un tableau structuré pour le "tableau 2".

Merci, cela fonctionne... presque !

Prenons l'exemple de novembre 2024. Sur ce mois-ci toutes les données de Michel sont à 0 dans le tableau 1.

Avec votre formule, quand Excel va faire la moyenne, il va bien prendre toutes les données de Michel répondant aux critères dans le tableau 2 mais dans le tableau 1 il va prendre en compte 1 zéro, donc la moyenne se retrouve faussée car divise par un de trop.

Et oui, je sais que je dois structurée mon tableau, mais il fait partie d'une énorme base dont dépend tout un tas de formules, compliqué à modifier mais j'y travaille 😉

Bonjour à tous de nouveau !

Proposition amendée :

=LET(
    _f1; FILTRE(CHOISIRCOLS(Tableau; EQUIVX(A2; Tableau[#En-têtes]; 0)); (Tableau[Activité] = 1) * (Tableau[Effectué] = 1) * (Tableau[Date] >= B2) * (Tableau[Date] < C2); "");
    _f2; FILTRE(G5:G737; (TEXTE(I5:I737; "aaaamm") = TEXTE(B2; "aaaamm")) * (H5:H737 = 1) * (J5:J737 = "Oui") * (K5:K737 = A2); "");
    a; ASSEMB.V(_f1; _f2);
    MOYENNE(FILTRE(a; a <> 0))
)

Nickel, ça fonctionne, mille mercis ! Et promis, je m'occupe de mes tableaux !

Bonjour à tous !

Bien....

Je vous remercie de ce retour.

Rechercher des sujets similaires à "moyenne fonction filtre"