Compter les doublons triplons ...

Y compris Power BI, Power Query et toute autre question en lien avec Excel
b
beas
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 25 octobre 2006

Message par beas » 12 juillet 2007, 14:42

Bonjour,

Je souhaite compter le nombre des valeurs multiples dans le fichier que voici :
https://www.excel-pratique.com/~files/do ... mptage.xls

J'ai pu dénombrer le nombre de collaborateur total pour chaque formateur :
{=SOMME((FREQUENCE(SI(Formateur=C28;SI(Nom<>"";EQUIV(Nom;Nom;0)));LIGNE(Nom))>0)*1)}

Et aussi le nombre total de collaborateur uni-session et donc multisession (par soustraction) :
{=SOMME(SI(NB.SI(Nom;Nom)>1;0;1))}

Mais je n'arrive pas à trouver une formule pour le nombre de collaborateurs multi-session par formateur (en sachant qu'un collaborateur peut avoir X sessions)
J'ai essayé en ajoutant ET() mais ça me donne 1 quand je passe en matriciel :
=SOMME(SI(ET(NB.SI(Nom;Nom)>1;Formateur=C28);0;1))
Bref, je sèche,
Quelqu'un pourrait-il me trouver une solution ?
D'avance merci pour vos recherches
J
JeanMarie
Membre fidèle
Membre fidèle
Messages : 276
Inscrit le : 3 décembre 2006

Message par JeanMarie » 12 juillet 2007, 20:25

Bonjour Beas

Il n'y a rien à changer dans l'ordre des fonctions dans la formule, si ce n'est la valeur du comparateur
=SOMME((FREQUENCE(SI(Formateur=C27;SI(Nom<>"";EQUIV(Nom;Nom;0)));LIGNE(Nom))[b]>1[/b])*1)
formule à mettre en H27.

Attention, dans la définition des plages, tu as nommé "Nom" ; "Formateur" ; "Lieu" ; "Agence", en commençant à la ligne 2, ce qui est correct en soit. Mais la fonction EQUIV retourne la position de la valeur à chercher, sous forme relative, c'est-à-dire en fonction de la plage indiquée en deuxième argument, exemple =EQUIV("MACHIN";Formateur;0) retourne la valeur 8, ce qui est exact, mais MACHIN se trouve dans la feuille en ligne 9.
La partie de la formule, LIGNE(Nom) retourne une matrice allant de 2 à 22, quand FREQUENCE calculera les intervalles, la valeur 1 sera prise dans l'intervalle 2, ce qui donnera une erreur dans le résultat affiché (exemple F27 dans ton fichier).

Pour résoudre ce problème, tu as trois possibilités.
- Soustraire la valeur 1 pour chaque valeurs de la matrice LIGNE() comme ceci
=SOMME((FREQUENCE(SI(Formateur=C27;SI(Nom<>"";EQUIV(Nom;Nom;0)));LIGNE(Nom)-1)>0)*1)
- Passer toutes les plages en commençant à la ligne 1, et se terminant à la ligne 22.
- Rajouter une plage "Matrice", avec comme référence.
=DECALER(A$1;;;lignes(Nom))
et la formule :
=SOMME((FREQUENCE(SI(Formateur=C27;SI(Nom<>"";EQUIV(Nom;Nom;0)));LIGNE(Matrice))>0)*1)
La dernière solution étant celle à retenir.

J'espère avoir été le plus complet, et le plus explicite, sur cette formule.
Si tu as des questions, n'hésite pas, cela me permet de m'améliorer sur les explications à donner.

@+Jean-Marie
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message