SOMME.PROD / SUMPRODUCT Nb.si sur deux variables

olivierg

XLDnaute Nouveau
Bonjour, j' ai une base de donnees de longueur variable.
Pour chaque ligne, imaginons que j ai trois colonnes, l une avec une marque de voiture, l autre avec plusieurs status dont neuve et la troisieme avec l annee

Dans une derniere colonne, je souhaite que pour chaque ligne, excel verifie qu il n y a pas de voiture de meme marque mais qui soit neuve. Si une autre voiture est neuve, alors j affiche un message, sinon, j affiche rien ou alors si l annee est 2007, meme message.

Dans colonne C la marque de la voiture, colonne Q le status, colonne R l annee

J ai trouve que la fonction somme.prod peut etre utilisee pour compter selon 2 variables :
if(not(or(Q1="neuve";R1=2007);if(SUMPRODUCT(--(data!$C$1:$C$10000=C1); --(data!$Q$1:$Q$10000="neuve"))+SUMPRODUCT(--(data!$C$1:$C$10000=C1); --(data!$R$1:$R$10000=2007))>0;"UNE MEILLEURE OFFRE EXISTE";"");"")

Probleme: L utilisation de somme.prod fait ENORMEMENT RALENTIR MON ORDINATEUR.

Question1: Y a t il une fonction utilisant moins de ressources pour arriver au meme resultat.

Question 2: La base de donnees est de longueur variable. Ca peut etre 3000 lignes comme 9000. Est-il possible de compter le nombre de ligne et d' utiliser ce resultat a la place du 10000 par defaut.


Merci par avance, car pour l instant, je rame ... (comme l ordi)
 

Monique

Nous a quitté
Repose en paix
Re : SOMME.PROD / SUMPRODUCT Nb.si sur deux variables

Bonjour,

Tu peux rassembler les 2 SommeProd et supprimer le NON()
=SI(OU(Q2="neuve";R2=2007);"";SI(SOMMEPROD(($C$1:$C$10000=C2)*($Q$1:$Q$10000="neuve")*($R$1:$R$10000=2007))>0;"UNE MEILLEURE etc";""))

Tu peux nommer les 3 plages de façon à ce que la formule ne prenne en compte que le nb nécessaire de lignes (Insertion - Nom - Définir)
Marque : =DECALER($C$1;;;NBVAL($C:$C))
Stat : =DECALER($Q$1;;;NBVAL($C:$C))
Ann : =DECALER($R$1;;;NBVAL($C:$C))

La formule devient :
=SI(OU($Q2="neuve";$R2=2007);"";SI(SOMMEPROD((Marque=$C2)*(Stat="neuve")*(Ann=2007))>0;"UNE MEILLEURE etc";""))

Tu peux aussi donner un nom à la formule (Insertion - Nom - Définir)
La formule devient :
=FormuleUn

Mais c’est vrai que 10 000 lignes, c’est beaucoup.
Reste la macro qui copie la formule, la colle puis colle seulement le résultat, puis supprime les cellules inutiles. Mais je ne saurai pas faire.
 

Pièces jointes

  • SommeProdOlivierg.zip
    2.7 KB · Affichages: 84

Statistiques des forums

Discussions
312 364
Messages
2 087 626
Membres
103 625
dernier inscrit
Smer