Problème combinaison fonctions SOMMEPROD et OU
Fermé
Kayna.86
Messages postés
42
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2013
-
23 janv. 2013 à 10:36
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 25 janv. 2013 à 15:37
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 25 janv. 2013 à 15:37
A voir également:
- Problème combinaison fonctions SOMMEPROD et OU
- Fonction si et - Guide
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Nombre de combinaison possible avec 10 chiffres - Forum Programmation
- Tableau de combinaison loto ✓ - Forum Excel
- Logiciel combinaison loto - Forum Logiciels
4 réponses
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
23 janv. 2013 à 10:56
23 janv. 2013 à 10:56
Bonjour,
Déjà j'aurais écrit la formule comme ça, mais ça ne changera rien à mon avis.
=SUMPRODUCT(($A34=Site_database)*((StartContract<=B$4)+(StartContract=""))*((EndContract>B$4)+(EndContract=""))*(NTC="")*Rent)
Sans un extrait de ton fichier difficile de répondre.
Travaille en réduisant aux 5 premières lignes, tu y verras plus clair.
Sinon déposer le fichier *.xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.
eric
Déjà j'aurais écrit la formule comme ça, mais ça ne changera rien à mon avis.
=SUMPRODUCT(($A34=Site_database)*((StartContract<=B$4)+(StartContract=""))*((EndContract>B$4)+(EndContract=""))*(NTC="")*Rent)
Sans un extrait de ton fichier difficile de répondre.
Travaille en réduisant aux 5 premières lignes, tu y verras plus clair.
Sinon déposer le fichier *.xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.
eric
Kayna.86
Messages postés
42
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2013
5
24 janv. 2013 à 17:11
24 janv. 2013 à 17:11
Bonjour,
Désolée de ma réponse tardive. Voici un extrait de mon fichier dont j'ai changé les données, biensur, et réduit.
https://www.cjoint.com/c/CAyrjxm8JWM
Merci de votre aide.
Cordialement,
Kayna
Désolée de ma réponse tardive. Voici un extrait de mon fichier dont j'ai changé les données, biensur, et réduit.
https://www.cjoint.com/c/CAyrjxm8JWM
Merci de votre aide.
Cordialement,
Kayna
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 24/01/2013 à 17:21
Modifié par michel_m le 24/01/2013 à 17:21
Bonjour
c'est la syntaxe du OU qui est fausse
comme tu manipules des booléens avec des chiffre un test bon renvoie 1 sinon 0
d'où tes "résultats bien supérieurs"
il faut écrire: (A+B=1) qui est le OU exclusif (Xor)
Michel
c'est la syntaxe du OU qui est fausse
comme tu manipules des booléens avec des chiffre un test bon renvoie 1 sinon 0
A=0+B=0--->0 A=0+B=1 --->1 A=1+ B=0--->1 A=1 + B=1--->2
d'où tes "résultats bien supérieurs"
il faut écrire: (A+B=1) qui est le OU exclusif (Xor)
Michel
Kayna.86
Messages postés
42
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2013
5
24 janv. 2013 à 18:26
24 janv. 2013 à 18:26
Bonjour Michel,
Merci de ta réponse.
Je pense avoir compris tes explications. En revanche, j'ai beaucoup de mal à l'appliquer à mon cas:
Si l'on reprends ma formule, en fait, au lieu d'avoir :
;--((StartContract<=B$4)+(StartContract=""));--
Je devrais avoir quelque chose qui ressemble à:
;--((StartContract=((<=B$4)+(""))
Ma solution ne fonctionne pas (problème de sytaxe surement). Et puis, je ne sais pas comment intégrer le signe "<=" dans la formule.
Pourriez-vous m'aider, s'il vous plait?
Merci d'avance
Flora
Merci de ta réponse.
Je pense avoir compris tes explications. En revanche, j'ai beaucoup de mal à l'appliquer à mon cas:
Si l'on reprends ma formule, en fait, au lieu d'avoir :
;--((StartContract<=B$4)+(StartContract=""));--
Je devrais avoir quelque chose qui ressemble à:
;--((StartContract=((<=B$4)+(""))
Ma solution ne fonctionne pas (problème de sytaxe surement). Et puis, je ne sais pas comment intégrer le signe "<=" dans la formule.
Pourriez-vous m'aider, s'il vous plait?
Merci d'avance
Flora
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
24 janv. 2013 à 18:51
24 janv. 2013 à 18:51
Bonjour,
Je n'ai pas ouvert ton fichier mais plutôt qcq chose comme :
*(((StartContract<=B$4)+(StartContract=""))=1)
qu'on doit pouvoir simplifier en :
*((StartContract<=B$4+StartContract="")=1)
eric
Je n'ai pas ouvert ton fichier mais plutôt qcq chose comme :
*(((StartContract<=B$4)+(StartContract=""))=1)
qu'on doit pouvoir simplifier en :
*((StartContract<=B$4+StartContract="")=1)
eric
Kayna.86
Messages postés
42
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2013
5
25 janv. 2013 à 10:45
25 janv. 2013 à 10:45
Bonjour Eriic,
J'ai fait le test et malheureusement, la formule de ne fonctionne pas. J'obtiens les mêmes résultats;
Voici le fichier auquel j'ai appliqué les ajustements proposés:
https://www.cjoint.com/c/CAzkR6CcV2g
Cdt,
Kayna.
J'ai fait le test et malheureusement, la formule de ne fonctionne pas. J'obtiens les mêmes résultats;
Voici le fichier auquel j'ai appliqué les ajustements proposés:
https://www.cjoint.com/c/CAzkR6CcV2g
Cdt,
Kayna.
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
25 janv. 2013 à 15:37
25 janv. 2013 à 15:37
Bonjour,
Tu ne peux pas utiliser sommeprod() sur des plages de colonnes entières.
D'une part parce qu'excel n'aime pas, et surtout parce que c'est une fonction matricielle extrèment gourmande en ressources.
Si tu mets 1000 lignes par 80 formules tu vas avoir des lenteurs insupportables.
Il faut limiter les lignes au strict nécessaire quelques dizaines, centaines maxi.
Si tu rédéfinis tes plages sur les lignes 2 à 50 tu vois que ça marche.
Le mieux est d"utiliser un nom dynamique.
Compter le nombre de lignes sur une colonne entièrement remplie, par exemple B :
=NBVAL(bdd!$B:$B)-1 => 29
Et pour chaque nom utiliser décaler() :
NTC: =DECALER(bdd!$D$2;;;NBVAL(bdd!$B:$B)-1;)
https://www.cjoint.com/c/CAzpLmuoHyh
eric
Tu ne peux pas utiliser sommeprod() sur des plages de colonnes entières.
D'une part parce qu'excel n'aime pas, et surtout parce que c'est une fonction matricielle extrèment gourmande en ressources.
Si tu mets 1000 lignes par 80 formules tu vas avoir des lenteurs insupportables.
Il faut limiter les lignes au strict nécessaire quelques dizaines, centaines maxi.
Si tu rédéfinis tes plages sur les lignes 2 à 50 tu vois que ça marche.
Le mieux est d"utiliser un nom dynamique.
Compter le nombre de lignes sur une colonne entièrement remplie, par exemple B :
=NBVAL(bdd!$B:$B)-1 => 29
Et pour chaque nom utiliser décaler() :
NTC: =DECALER(bdd!$D$2;;;NBVAL(bdd!$B:$B)-1;)
https://www.cjoint.com/c/CAzpLmuoHyh
eric