Countifs distinct

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
melanie57
Membre habitué
Membre habitué
Messages : 91
Inscrit le : 24 janvier 2014
Version d'Excel : 2010

Message par melanie57 » 21 novembre 2017, 10:22

Bonjour le forum,

J'aimerai optimiser la formule ci dessous afin de ne sélectionner uniquement des valeurs distinctes :
=COUNTIFS(A:A;"critère 1";C:C;"critère 2")
en gros dans mon tableau, j'ai 3 colonnes :
- colonne A : PROJETS (nom du projet : REPO / DEV / COMPTA) --> ce qui m'intéresse c'est uniquement les projets REPO dans ma formule
- colonne B : NAME (nom du projet)
- ETAT : l'état du projet (en cours / en attente / fermé)

c'est sur la colonne NAME que je peux avoir des doublons (par contre je ne peux pas les supprimer car j'en ai besoin pour les étapes suivante de mon reporting)

Je vous joins un fichier exemple avec un exemple de données.
Si quelqu'un peut m'aide ou m'orienter car j'ai déjà regarder sur le forum et j'ai rien trouvé qui puisse m'aider (où alors je suis passée à côté)

merci d'avance :)

Mélanie
test.xlsx
(9.13 Kio) Téléchargé 5 fois
°oO Mélanie57 °oO Enjoy your life !
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'396
Appréciations reçues : 305
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 21 novembre 2017, 11:22

Bonjour

Un essai à tester avec une fonction personnalisée. Te convient-il ?
Bye !
test v1.xlsm
(21.33 Kio) Téléchargé 11 fois
Avatar du membre
melanie57
Membre habitué
Membre habitué
Messages : 91
Inscrit le : 24 janvier 2014
Version d'Excel : 2010

Message par melanie57 » 21 novembre 2017, 11:42

Bonjour gmb,

Merci de ta réponse et ton premier test qui marche tr!s bien dans l'exemple.
J'ai changé ta fonction car ma colonne status est dans la colonne N:N en réalité
Function CountSiREPO(plage As Range, etat As Range)
    Set dico = CreateObject("Scripting.Dictionary")
    For i = 1 To plage.Rows.Count
        v = plage(i, 1) & plage(i, 2) & plage(i, 14)
        
        If dico.exists(v) Then
            dico(v) = dico(v) + 1
        Else
            dico(v) = 1
        End If
    Next i
    clé = dico.keys
    it = dico.items
    n = 0
    For i = 0 To dico.Count - 1
        If clé(i) Like "REPO : Reporting" & etat Then
            n = n + 1
        End If
    Next i
    CountSiREPO = n
End Function
Le problème c'est quil me retourne 0 à chaque fois
de plus comme j'ai un jeu de données assez volumineux, je me demandais si c'était pas possible de procéder à une formule plutot qu'à une fonction vba ?

Mélanie57

Je veux dire une formule avec des expressions déjà intégré dans Excel
FREQUENCY
SUMPRODUCT
Autres
°oO Mélanie57 °oO Enjoy your life !
c
ceuzin
Membre dévoué
Membre dévoué
Messages : 569
Appréciations reçues : 24
Inscrit le : 29 octobre 2011
Version d'Excel : 2002

Message par ceuzin » 21 novembre 2017, 12:27

Bonjour,

En I2:

=NB(1/FREQUENCE(SI((Critère1=$I$1)*(critère2=H2);EQUIV(valeurs;valeurs;0));LIGNE(INDIRECT("1:"&LIGNES(valeurs)))))
Valider avec maj+ctrl+entrée

Critère1 =DATA!$A$2:$A$12
critère2 =DATA!$C$2:$C$12
valeurs =DATA!$B$2:$B$12



Ceuzin
Copie de test v1.xls
(31 Kio) Téléchargé 3 fois
Avatar du membre
melanie57
Membre habitué
Membre habitué
Messages : 91
Inscrit le : 24 janvier 2014
Version d'Excel : 2010

Message par melanie57 » 21 novembre 2017, 12:41

Merci Ceuzin,

Cette formule fonctionne, seulement un critère a été oublié.
Je souhaite compter uniquement les projets REPO
°oO Mélanie57 °oO Enjoy your life !
c
ceuzin
Membre dévoué
Membre dévoué
Messages : 569
Appréciations reçues : 24
Inscrit le : 29 octobre 2011
Version d'Excel : 2002

Message par ceuzin » 21 novembre 2017, 12:50

Cf PJ


=NB(1/FREQUENCE(SI((Critère1="REPO")*(critère2=H2);EQUIV(valeurs;valeurs;0));LIGNE(INDIRECT("1:"&LIGNES(valeurs)))))
Valider avec maj+ctrl+entrée

Ceuzin
Copie de test v1.xls
(39.5 Kio) Téléchargé 5 fois
Avatar du membre
melanie57
Membre habitué
Membre habitué
Messages : 91
Inscrit le : 24 janvier 2014
Version d'Excel : 2010

Message par melanie57 » 21 novembre 2017, 14:02

Merci Ceuzin,

Cela fonctionne. :)
Par contre ça prend un temps énorme à charger quand on a un jeu de données volumineux
°oO Mélanie57 °oO Enjoy your life !
c
ceuzin
Membre dévoué
Membre dévoué
Messages : 569
Appréciations reçues : 24
Inscrit le : 29 octobre 2011
Version d'Excel : 2002

Message par ceuzin » 21 novembre 2017, 17:30

Il faut utiliser la fonction personnalisée.

Ceuzin
FonctionNbUniques2Criteres2.xls
(45.5 Kio) Téléchargé 7 fois
FonctionNbUniques2Criteres.xls
(43 Kio) Téléchargé 4 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message