Réduire une fonction pour ne pas à avoir à la mettre à jour

Bonsoir,

Je m'explique, j'aimerai réduire la fonction ci-dessous (je ne l'ai pas écrite en entier) pour ne pas a avoir à la mettre à jour quand je rajoute un tableau dans l'onglet Résultats. Il y a un écart de 18 lignes à chaque fois. L'idée est d'avoir un pourcentage du nombre de fois où il y a deux "X" pour chaque ligne. Par exemple ligne 1 c'est sur les plage H4:J4, puis H22:J22, puis H40:J:40, etc ...

=IF(COUNTIF(RESULTATS!H$4:J$4;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$22:J$22;"X")=2;1;"")/(COUNTIF(RESULTATS!Q$2:T;"Calcul"))

lien GS : https://docs.google.com/spreadsheets/d/1ZXPu0Yts8k0x0eJcPAKCizv6D-0SEORhBIIJv24iAi4/edit?usp=sharing

MERCI D'AVANCE

Sauf erreur de ma part, car je n'y comprends rien au foot,

=IF(COUNTIF(offset(RESULTATS!H$1:J$1;E5-1;);"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$22:J$22;"X")=2;1;"")/(COUNTIF(RESULTATS!Q$2:T;"Calcul"))

j'ai mis en colonne E la ligne à laquelle chaque série de données débute.

Mais j'ai presque des doutes sur la formule de base elle-même ... qu'est-ce qu'elle est sensée calculer ?

Merci pour votre aide. La fonction est censé calculé le nombre de fois où il y deux "X" sur la plage H:J / divisé par le nombre de tableaux, mais attention il y a 14 lignes dans le tableau où peuvent être présente les X. J'ai besoin de calculer le % ligne par ligne.

Pour mieux vous expliquer, je veux calculer le % de doubles jouée sur une grille de lotofoot par ligne (1,2,3 .. etc).

Ci-dessous la fonction complete que j'aimerai réduire, et surtout ne pas à avoir à mettre à jour à chaque fois que je rajoute un tableau dans la feuille "Resultats".

=(IF(COUNTIF(RESULTATS!H$4:J$4;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$22:J$22;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$40:J$40;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$58:J$58;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$76:J$76;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$94:J$94;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$112:J$112;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$130:J$130;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$148:J$148;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$166:J$166;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$184:J$184;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$202:J$202;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$220:J$220;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$238:J$238;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$256:J$256;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$274:J$274;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$292:J$292;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$310:J$310;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$329:J$329;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$346:J$346;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$364:J$364;"X")=2;1;"")+IF(COUNTIF(RESULTATS!H$382:J$382;"X")=2;1;""))/(COUNTIF(RESULTATS!Q$2:T;"Calcul"))

Je pense qu'il y a une erreur dans votre calcul, car le résultat ne peux pas être supérieur à 100%.

Merci d'avance

Je pense qu'il y a une erreur dans votre calcul, car le résultat ne peux pas être supérieur à 100%.

effectivement, je m'en doutais comme je disais car je crois que dans ta formule de base il manque des parenthèses (?) mais aussi que je m'étais fcalisé sur le premier terme

je n'ai fait qu'appliquer le offset en remplaçant

RESULTATS!H$4:J$4

par

offset(RESULTATS!H$1:J$1;E5-1;)

mais c'était incomplet

en G5

=arrayformula(sumproduct(MMULT(IF(RESULTATS!H$4:J="X";1;0);transpose(COLUMN(RESULTATS!H$4:J)^0))=2;mod(row(RESULTATS!A$4:A)-3-F5;18)=0))/(COUNTIF(RESULTATS!Q$2:T;"Calcul"))

C'est parfait c'est exactement ça que je cherchais à faire ! Merci beaucoup !!

Pour ceux qui passeraient ici, un peu d'explication sur la formule ...

  • Je transforme ici les X en 1 ou 0 afin de pouvoir additionner, je vais donc avoir une matrice à 3 colonnes
=arrayformula(IF(RESULTATS!H$4:J="X";1;0))
  • Je vais ici créer une matrice de chiffres 1 de 3 lignes correspondant aux 3 colonnes
=arrayformula(transpose(COLUMN(RESULTATS!H$4:J)^0))
  • Cela me permet alors de faire une multiplication matricielle qui me donne le total par lignes
=arrayformula(MMULT(IF(RESULTATS!H$4:J="X";1;0);transpose(COLUMN(RESULTATS!H$4:J)^0)))

Un visuel pour ces 3 fonctions sur cases jaunes

image

le plus important est fait, il suffit maintenant

  • de vérifier si la comme par ligne est égale à 2
  • de ne prendre que toutes les 18 valeurs par un modulo
Rechercher des sujets similaires à "reduire fonction pas mettre jour"