Excel (formule : SOMMEPROD et SOMME.SI)
Résolu
marie
-
marie -
marie -
Bonjour,
Je vais vous expliquer mon souci à travers un exemple :
j'ai un tableau avec 3 colonnes (colonne A : référence, colonne B : service, colonne C : montant)
Je veux additionner tous les montants correspondants aux références (mlj0010 ; mlj1110 ; mlj2210 ; mlj3310).
J'ai essayé 2 formules :
- la 1ère, en détaillant chaque références (mais la formule est trop longue!!!),
- et la 2ème, j'ai inséré une étoile pour avoir tous les références commençant par mlj et finissant par 10.
=(SOMME.SI(A2:A23;"mlj0010";C2:C23))+(SOMME.SI(A2:A23;"mlj1110";C2:C23))+(SOMME.SI(A2:A23;"mlj2210";C2:C23))+(SOMME.SI(A2:A23;"mlj3310";C2:C23))
=SOMME.SI(A2:A23;"mlj*10";C2:C23)
Cela fonctionne (mes 2 formules fonctionnent très bien !!!).
Maintenant, je voudrais additionner tous les montants correspondants aux références (mlj0010 ; mlj1110 ; mlj2210 ; mlj3310) et qui ont comme service (informatique).
Donc, ici j'ai 2 conditions (j'utilise la formule SOMMEPROD).
=(SOMMEPROD((A2:A23="mlj0010")*(B2:B23="informatique")*(C2:C23)))+(SOMMEPROD((A2:A23="mlj1110")*(B2:B23="informatique")*(C2:C23)))+(SOMMEPROD((A2:A23="mlj2210")*(B2:B23="informatique")*(C2:C23)))+(SOMMEPROD((A2:A23="mlj3310")*(B2:B23="informatique")*(C2:C23)))
=SOMMEPROD((A2:A23="mlj*10")*(B2:B23="informatique")*(C2:C23))
La 1ère formule fonctionne mais pas la derniére (le système ne comprend pas mlj*10).
MA QUESTION : comment faire fonctionner ma derniére formule (pour m'éviter d'avoir une très longue formule de calcul)?
Merci beaucoup
Marie
Je vais vous expliquer mon souci à travers un exemple :
j'ai un tableau avec 3 colonnes (colonne A : référence, colonne B : service, colonne C : montant)
Je veux additionner tous les montants correspondants aux références (mlj0010 ; mlj1110 ; mlj2210 ; mlj3310).
J'ai essayé 2 formules :
- la 1ère, en détaillant chaque références (mais la formule est trop longue!!!),
- et la 2ème, j'ai inséré une étoile pour avoir tous les références commençant par mlj et finissant par 10.
=(SOMME.SI(A2:A23;"mlj0010";C2:C23))+(SOMME.SI(A2:A23;"mlj1110";C2:C23))+(SOMME.SI(A2:A23;"mlj2210";C2:C23))+(SOMME.SI(A2:A23;"mlj3310";C2:C23))
=SOMME.SI(A2:A23;"mlj*10";C2:C23)
Cela fonctionne (mes 2 formules fonctionnent très bien !!!).
Maintenant, je voudrais additionner tous les montants correspondants aux références (mlj0010 ; mlj1110 ; mlj2210 ; mlj3310) et qui ont comme service (informatique).
Donc, ici j'ai 2 conditions (j'utilise la formule SOMMEPROD).
=(SOMMEPROD((A2:A23="mlj0010")*(B2:B23="informatique")*(C2:C23)))+(SOMMEPROD((A2:A23="mlj1110")*(B2:B23="informatique")*(C2:C23)))+(SOMMEPROD((A2:A23="mlj2210")*(B2:B23="informatique")*(C2:C23)))+(SOMMEPROD((A2:A23="mlj3310")*(B2:B23="informatique")*(C2:C23)))
=SOMMEPROD((A2:A23="mlj*10")*(B2:B23="informatique")*(C2:C23))
La 1ère formule fonctionne mais pas la derniére (le système ne comprend pas mlj*10).
MA QUESTION : comment faire fonctionner ma derniére formule (pour m'éviter d'avoir une très longue formule de calcul)?
Merci beaucoup
Marie
A voir également:
- Excel (formule : SOMMEPROD et SOMME.SI)
- Formule si et excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule somme excel colonne - Guide
- Excel mise en forme conditionnelle formule - Guide
- Liste déroulante excel - Guide
6 réponses
Bonjour
essaye cela
=SOMMEPROD((gauche(A2:A23,3)="mlj") * ( droite(A2:A23)="10") * (B2:B23="informatique") * (C2:C23))
essaye cela
=SOMMEPROD((gauche(A2:A23,3)="mlj") * ( droite(A2:A23)="10") * (B2:B23="informatique") * (C2:C23))
oops une tite erreur
=SOMMEPROD((gauche(A2:A23,3)="mlj") * (droite(A2:A23,2)="10") * (B2:B23="informatique") * (C2:C23))
=SOMMEPROD((gauche(A2:A23,3)="mlj") * (droite(A2:A23,2)="10") * (B2:B23="informatique") * (C2:C23))
Merci Wilfried, je viens d'essayer (ça fonctionne avec une petite erreur à corriger)
=SOMMEPROD((GAUCHE(A2:A23;3)="mlj")*(DROITE(A2:A23;2)="10")*(B2:B23="informatique")*(C2:C23))
mettre des points virgules au lieu des virgules.
Mais merci énormément.
Une petite question par rapport à ta formule : (A2:A23;3) le chiffre 3 correspond au nombre de caractéres qui compose le mot (mlj) ?
Merci
Marie
=SOMMEPROD((GAUCHE(A2:A23;3)="mlj")*(DROITE(A2:A23;2)="10")*(B2:B23="informatique")*(C2:C23))
mettre des points virgules au lieu des virgules.
Mais merci énormément.
Une petite question par rapport à ta formule : (A2:A23;3) le chiffre 3 correspond au nombre de caractéres qui compose le mot (mlj) ?
Merci
Marie
re:
oui c'est bien cela, si tu as un nombre de caractere qui correspond à la valeur d'une cellule, tu remplaces 3
par nbcar(macellule)
oui c'est bien cela, si tu as un nombre de caractere qui correspond à la valeur d'une cellule, tu remplaces 3
par nbcar(macellule)
Bonjour
J'ai une autre question (concernant la formule de calcul SOMMEPROD)
J'ai toujours un tableau avec 3 colonnes (A: nom de communes ; B: Privé/Public ; C: Surface en m2).
En ligne 1 : j'ai les entêtes des colonnes et mes données commencent en ligne 2.
voir ci-dessous exemple (mon tableau d'origine est composé de 800 lignes environ) :
Nom de communes Privé/Public Surface en M²
lyonmkk01129999 privé 1
lyonyu59999 privé 2
lyonui9999 privé 3
lyonyj55j4j9999 privé 4
lyonu9999 privé 5
lyonttttt999912 privé 6
lyonzzz9999133 privé 7
lyon999911 privé 8
lyon9999 privé 9
lyon11ee9999 privé 10
lyon9999 privé 11
lyonmkk01129999 public 1
lyonyu59999 public 2
lyonui9999 public 3
lyonyj55j4j9999 public 4
lyonu9999 public 5
Je veux additionner toutes les surfaces des communes commençant par "lyon" et finissant par "9999" (avec pour mention privé).
Donc ça j'arrive à le faire (c'est ce que tu m'as expliqué hier)
=SOMMEPROD((GAUCHE(A2:A17;4)="lyon")*(DROITE(A2:A17;4)="9999")*(B2:B17="privé")*(C2:C17))
Mais, j'ai 3 lignes dans mon tableau qui ne sont pas prises car "9999" n'est pas situé tout à fait à droite. Il y a une suite.
lyonttttt999912 privé 6
lyonzzz9999133 privé 7
lyon999911 privé 8
MA QUESTION : Existe t'il une formule qui pourrait prendre toutes les cellules composées de "lyon" situé à gauche et prendre "9999" situé au milieu (toujours avec 1 deuxiéme condition "privé") ?
Merci d'avance
Marie
J'ai une autre question (concernant la formule de calcul SOMMEPROD)
J'ai toujours un tableau avec 3 colonnes (A: nom de communes ; B: Privé/Public ; C: Surface en m2).
En ligne 1 : j'ai les entêtes des colonnes et mes données commencent en ligne 2.
voir ci-dessous exemple (mon tableau d'origine est composé de 800 lignes environ) :
Nom de communes Privé/Public Surface en M²
lyonmkk01129999 privé 1
lyonyu59999 privé 2
lyonui9999 privé 3
lyonyj55j4j9999 privé 4
lyonu9999 privé 5
lyonttttt999912 privé 6
lyonzzz9999133 privé 7
lyon999911 privé 8
lyon9999 privé 9
lyon11ee9999 privé 10
lyon9999 privé 11
lyonmkk01129999 public 1
lyonyu59999 public 2
lyonui9999 public 3
lyonyj55j4j9999 public 4
lyonu9999 public 5
Je veux additionner toutes les surfaces des communes commençant par "lyon" et finissant par "9999" (avec pour mention privé).
Donc ça j'arrive à le faire (c'est ce que tu m'as expliqué hier)
=SOMMEPROD((GAUCHE(A2:A17;4)="lyon")*(DROITE(A2:A17;4)="9999")*(B2:B17="privé")*(C2:C17))
Mais, j'ai 3 lignes dans mon tableau qui ne sont pas prises car "9999" n'est pas situé tout à fait à droite. Il y a une suite.
lyonttttt999912 privé 6
lyonzzz9999133 privé 7
lyon999911 privé 8
MA QUESTION : Existe t'il une formule qui pourrait prendre toutes les cellules composées de "lyon" situé à gauche et prendre "9999" situé au milieu (toujours avec 1 deuxiéme condition "privé") ?
Merci d'avance
Marie
re:
à essayer mais sans ganrantie
=SOMMEPROD((GAUCHE(A2:A17;4)="lyon")*(A2:A17="*9999*")*(B2:B17="privé")*(C2:C17))
à essayer mais sans ganrantie
=SOMMEPROD((GAUCHE(A2:A17;4)="lyon")*(A2:A17="*9999*")*(B2:B17="privé")*(C2:C17))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re:
autre essai
=SOMMEPROD((GAUCHE(A2:A17;4)="lyon") * NON(ESTERREUR(CHERCHE("9999";A2:A17))) *(B2:B17="privé") * (C2:C17))
autre essai
=SOMMEPROD((GAUCHE(A2:A17;4)="lyon") * NON(ESTERREUR(CHERCHE("9999";A2:A17))) *(B2:B17="privé") * (C2:C17))
re:
Cherche("9999";A2:A17) si la chaine n'existe pas, il renvoie une erreur, sinon il renvoie la position de la chaine dans le texte
ce qui nous interesse c'est de savoir si la chaine est dedans mais sa position on s'en moque
donc en testant si ca renvoie une erreur on sait que la chaine n'y est pas
Esterreur(.........) renvoie vrai s'il y a une erreur est faux s'il n'y en a pas
mais notre interet dans cette formule est de prendre l'inverse de l'erreur d'ou le NON(essterreur(........))
Cherche("9999";A2:A17) si la chaine n'existe pas, il renvoie une erreur, sinon il renvoie la position de la chaine dans le texte
ce qui nous interesse c'est de savoir si la chaine est dedans mais sa position on s'en moque
donc en testant si ca renvoie une erreur on sait que la chaine n'y est pas
Esterreur(.........) renvoie vrai s'il y a une erreur est faux s'il n'y en a pas
mais notre interet dans cette formule est de prendre l'inverse de l'erreur d'ou le NON(essterreur(........))