Pb avec sommeprod

Hello

J'utilise souvent la fonction sommeprod pour faire des sommes entre 2 dates.

Seuleument le ne comprends pas pouruqoi j'ai un #valeur sur une de mes formules alors qu'elle est exactement identique à une autre formule qui fonctionne.

J'ai pris une partie de mon fichier que je vous mets en pièce jointe.

Le sommeprod des pièces expédiées focntionne sans problème. Si je modifie mes dates de début ou de fin tout fonctionne

Le somme des pièces transfert refuse de fonctionner alors qu'on voit bien que la formule est exactement la même.

J'ai pensé à un problème de format de mes cellules mais quoi que je mette, je tombe sur #valeur

Bonjour le forum,

Sélectionner C4:C321 :

remplacer
4remplacer.xlsx (18.64 Ko)

Bonjour le fil,

A moins d'avoir une version très ancienne d'Excel, je pense qu'il faut arrêter d'utiliser SOMMEPROD()

Fonction très gourmande en ressource

Sans aucune modification à par ta formule, essaye ça

=SOMME.SI.ENS(D4:D321;B4:B321;">="&F2;B4:B321;"<=" & G2)

C'est miraculeux

Bonjour à tous,

dans C tu as des cellules vides qui ne sont pas vraiment vides car elles ont un texte vide (non, je ne fume que du légal ).

Elles sont donc vues comme un texte par le sommeprod(), et le * se passe mal forcément.

Difficile à appréhender car apparaissent vraiment vides. Sans doute dû à une mauvaise écriture par une macro, ou un copié-collé d'un résultat de formule du style =SI(A2>3;A2;"")

Pour t'en convaincre compare =ESTTEXTE(C15) et =ESTTEXTE(C127)

Sélectionne C puis 'Rechercher et sélectionner / Sélectionner les cellules', choisir 'Constantes' et dans 'Formules' tout décocher sauf 'Texte'. Contrôler la sélection et Suppr

eric

Bruno : es-tu sûr que somme.si.ens() soit plus optimisée que sommeprod() ? Elle est tout autant matricielle

Merci à vous

Il me semblait pourtant avoir vérifié les cellules vides mais visiblement non.

Je n'avais pas pensé à faire un "remplacer par" comme tu le proposes mbbp, pourtant c'est une astuce que j'utilise partout

Sinon avant nos réponses j'avais réussi à résoudre mon problème en changeant * par ;

=SOMMEPROD((B4:B321>=F2)*(B4:B321<=G2)*(C4:C321))

donnait #valeur

=SOMMEPROD((B4:B321>=F2)*(B4:B321<=G2);(C4:C321))

fonctionnait

Sinon merci Bruno pour ta formule. Je pense que désormais je vais utiliser cela.

sommeprod a toujours été pour moi très obscur à comprendre, alors que somme.si.ens me parait très logique

Re,

je me répond à moi-même

Aucun gain en performance de somme.si.ens() sur sommeprod(), voire même un pouième en plus dû sans doute aux concaténation supplémentaires.

Temps mesuré sur 1000 formules :

=SOMMEPROD(($B$4:$B$321>=$F$2)*($B$4:$B$321<=$G$2)*($D$4:$D$321)) : 0.00095 s

=SOMME.SI.ENS($D$4:$D$321;$B$4:$B$321;">="&$F$2;$B$4:$B$321;"<="&$G$2) : 0.0012 s

Même résultats avec des plages mal taillées comme B4:B10000

Sommeprod() et somme.si.ens() sont optimisés à l'identique.

Pour moi somme.si.ens() n'est qu'une autre syntaxe de Sommeprod() plus facile à appréhender par les novices.

Eriiiic, evolm,

Allez BrunoM45 l'a fait pour vous

2 colonnes de montant de plus d'1 million de ligne

Testez SOMME.SI.ENS() en enlevant l’apostrophe devant la formule en J5 et admirez le retour rapide du résultat

Vous remettez l'apostrophe et faites la même chose avec SOMMEPROD() en J6... arff, là ce n'est plus tout à fait pareil

C'était juste pour confirmer mon affirmation

Au plaisir

bonjour à tous

l'idéal étant :

1/ un TCD

et meiux encore :

2/ Power BI Desktop gratuit (la Rolls)

amitiés excelliennes

Effectivement, on sent une différence avec ton fichier.

Je me basais sur les temps mesurés par RefTreeAnalyser mais il doit avoir un bug, il annonce encore match nul :

2019 03 22 14 10 26 2019 03 22 14 08 57

J'ai ressorti mon ancien classeur qui me servait à mesurer avant :

Somme.si.ens() : 0.218 s

Sommeprod() : 1.090 s

(sur ton million de lignes)

x5, il n'y a donc pas photo

Dommage, j'aimais bien avoir accès aux mesures toujours disponible par un clic-droit

eric

Rechercher des sujets similaires à "sommeprod"