Existe-t-il une formule Excel concise pour calculer (A1 * A6) + (B1 * B6) + (C1 * C6)…?

45

Je veux savoir comment donner une formule concise pour la formule longue suivante dans la feuille Excel:

= (A1*A6)+(B1*B6)+(C1*C6)...

Est-ce que j'utilise une fonction de somme ou y a-t-il une autre fonction pour cela? Je pense que l'utilisation du côlon avec la SUMfonction devrait aider mais je ne sais pas comment l'utiliser.

rukuto
la source
4
Possibilité de dupliquer (cross-site) d' Excel: produit scalaire de deux gammes - Dépassement de pile
utilisateur202729
4
Pour LibreOffice Calc
user202729
7
Mathématiquement, cela s'appelle le produit scalaire ou le produit scalaire. Termes utiles si vous devez utiliser votre moteur de recherche préféré.
Philip Kendall
Produit intérieur: En règle générale, nous transposerions ce problème pour que nous le fassions (A1 * B1 + A2 * B2 + C3 * B3 ....) .... Bien sûr, cela ne concerne que la notation ...
JosephDoggie

Réponses:

110

Vous recherchez la fonction SOMMEPROD .

=SUMPRODUCT(A1:C1,A6:C6)

Ceci retournera la somme des produits des articles correspondants dans deux (ou plus) gammes.

entrez la description de l'image ici

Comme vous pouvez le constater dans la documentation Microsoft à laquelle je suis lié, les plages ne doivent pas nécessairement être composées de lignes ou de colonnes (bien qu'elles doivent avoir les mêmes dimensions).

SOMMEPROD peut multiplier des valeurs allant jusqu'à 255 plages différentes. Par exemple, =SUMPRODUCT(A1:C1,A6:C6,A11:C11)est le même que =A1*A6*A11+B1*B6*B11+C1*C6*C11.

Bois noir
la source
19

SUMfonction ne fonctionnera pas car il ajoute simplement les éléments. Vous devez multiplier les valeurs avant de passer à SUM comme=SUM(A1*A6, B1*B6, C1*C6, D1*D6, E1*E6)

Bien sûr, vous pouvez également utiliser =A1*A6 + B1*B6 + C1*C6 + D1*D6 + E1*E6ce qui donne pratiquement le même effort de frappe queSUM

Il y a beaucoup de meilleures solutions. Une solution consiste à utiliser une formule matricielle . Vous pouvez voir un exemple exact comme le vôtre là-bas:

Syntaxe de la formule de tableau

En général, les formules de tableau utilisent la syntaxe de formule standard. Ils commencent tous par un signe égal (=) et vous pouvez utiliser la plupart des fonctions Excel intégrées dans vos formules matricielles. La principale différence est que lorsque vous utilisez une formule matricielle, vous appuyez sur Ctrl+ Shift+ Enterpour entrer votre formule. Lorsque vous effectuez cette opération, Excel entoure votre formule de tableau avec des accolades. Si vous les saisissez manuellement, votre formule sera convertie en chaîne de texte et ne fonctionnera pas.

Les fonctions de tableau sont un moyen très efficace de créer une formule complexe. La formule de tableau =SUM(C2:C11*D2:D11)est la même que celle-ci:

=SUM(C2*D2,C3*D3,C4*D4,C5*D5,C6*D6,C7*D7,C8*D8,C9*D9,C10*D10,C11*D11).

Pour utiliser une formule matricielle dans votre cas, vous pouvez taper (vous devez bien entendu modifier le dernier élément du tableau en conséquence)

=SUM(A1:E1*A6:E6)

puis appuyez sur Ctrl+ Shift+Enter


La formule de tableau est un outil très puissant. Cependant, utilisez-le avec précaution. Chaque fois que vous devez le modifier, vous ne devez pas oublier d'appuyer sur Ctrl+ Shift+Enter

Pourquoi utiliser des formules matricielles?

Si vous avez de l'expérience dans l'utilisation de formules dans Excel, vous savez que vous pouvez effectuer des opérations assez sophistiquées. Par exemple, vous pouvez calculer le coût total d'un prêt sur un nombre d'années donné. Vous pouvez utiliser des formules matricielles pour effectuer des tâches complexes, telles que:

  • Comptez le nombre de caractères contenus dans une plage de cellules.

  • N'ajoutez que les nombres qui remplissent certaines conditions, telles que les valeurs les plus basses d'une plage ou les nombres situés entre une limite supérieure et une limite inférieure.

  • Somme chaque nième valeur dans une plage de valeurs.

Les formules Array offrent également ces avantages:

  • Cohérence: si vous cliquez sur l’une des cellules de E2 vers le bas, vous voyez la même formule. Cette cohérence peut aider à assurer une plus grande précision.

  • Sécurité: vous ne pouvez pas écraser un composant d'une formule matricielle multi-cellules. Par exemple, cliquez sur la cellule E3 et appuyez sur Supprimer. Vous devez soit sélectionner toute la plage de cellules (E2 à E11) et modifier la formule de l'ensemble du tableau, soit laisser le tableau tel quel. Par mesure de sécurité supplémentaire, vous devez appuyer sur Ctrl+ Shift+ Enterpour confirmer la modification de la formule.

  • Taille de fichier plus petite: vous pouvez souvent utiliser une seule formule matricielle au lieu de plusieurs formules intermédiaires. Par exemple, le classeur utilise une formule matricielle pour calculer les résultats de la colonne E. Si vous aviez utilisé des formules standard (telles que = C2 * D2, C3 * D3, C4 * D4…), vous auriez utilisé 11 formules différentes pour calculer les mêmes résultats.

C'est aussi plus rapide puisque le modèle d'accès est déjà connu. Maintenant, au lieu de faire 11 calculs différents séparément, il peut être vectorisé et effectué en parallèle, en utilisant plusieurs cœurs et une unité SIMD dans la CPU.

phuclv
la source
7
Cependant, sachez que les fonctions de tableau sont très fragiles. Si vous les copiez et les collez, par exemple, les choses peuvent très mal casser. Souvent, ils ne seront pas mis à jour correctement sans mise à jour forcée s'ils sont très volumineux. Grande fonctionnalité puissante mais perspicace comparée aux formules classiques.
JKreft
3
@StianYttervik: Je pense que la réponse est utile. Et si quelqu'un ouvre une feuille avec ce genre de formule et ne l'a jamais vue auparavant? Cette réponse serait utile pour ces utilisateurs.
Bad_Bishop
3
La formule matricielle @StianYttervik est un outil puissant à portée de main. Ce n'est pas du tout lent , car cela peut être plus facilement optimisé et vectorisé. Et cela économise de la mémoire. Même Google Docs le supporte. Et ne réponds pas à ça. Je ne répondrai plus
phuclv
2
@StianYttervik Certaines fonctions (par exemple MOD) provoqueront SUMPRODUCTune rupture, et vous devrez alors la remplacer par une formule Array. Sans parler de toutes les versions d'Office publiées, les formules de MAXIFStableaux utilisées en tant que fonctions officielles (par exemple, en 365) sont généralement utilisées. Si votre formule de tableau est lente, sobre et cassante, vous devez probablement optimiser votre code. Et, bien entendu, PowerQuery étant une extension supplémentaire, de nombreuses entreprises ne l'incluront pas (pour diverses raisons) dans leur package de création d'entreprise, ce qui en fait une solution de qualité inférieure à des fins commerciales distribuées.
Chronocidal
1
@Chronocidal Oui, il y a des cas, mais ils sont peu nombreux ... Et puis les requêtes de puissance sont la solution. Ou le modèle de données. Ou fonctions de cube. Ou tout ce qui précède. Les tableaux et le calcul / exécution ligne par ligne ne peuvent tout simplement pas être à la hauteur.
Stian Yttervik
7

Une autre approche consiste à insérer dans A7 l'expression = A1 * A6 et à la copier autant que vous le souhaitez, puis à additionner la ligne $ 7 $ pour obtenir la réponse finale. Il ne le fait pas dans une cellule comme vous le souhaitez, mais il est parfois pratique de disposer des produits intermédiaires. J'ai utilisé les deux versions. Celui-ci me semble plus excellent, mais vos goûts peuvent différer.

Ross Millikan
la source
1

si vous mettez une liste de nombres en colonnes au lieu de lignes (dites deux colonnes A et B), vous pouvez utiliser la fonction = Sumproduct (A: A, B: B) comme ça. cela vous donnera le produit d'autant de nombres qu'il y en a dans les colonnes A et B.

Vous pouvez utiliser autant de colonnes dans la fonction Sumproduct que nécessaire

AjayC
la source
2
Sumproduct (1: 1,2: 2) fonctionne de la même manière pour les lignes.
Máté Juhász
0

S'il n'y a rien d'autre dans les lignes 1 et 6 que ce que vous voulez avoir comme SUMPRODUCT()pour, vous pouvez utiliser l'idée mentionnée dans ce commentaire . Dans votre cas, comme indiqué dans votre question, vous utiliseriez=SUMPRODUCT(1:1,6:6)

Chris Rogers
la source
4
Cela ne donne pas vraiment des informations supplémentaires en plus de ce qui est déjà entré dans les réponses et les commentaires.
Máté Juhász
1
@ MátéJuhász - Quelle réponse fournit ma réponse? Votre commentaire sur la réponse fournie par @AjayC donne SUMPRODUCT(1:1,2:2)et j'ai fourni une réponse sur la base de ce commentaire, expliquant comment il peut être utilisé en fonction de la question initiale et quelles en seraient les limites.
Chris Rogers