是否有简洁的Excel公式来计算(A1 * A6)+(B1 * B6)+(C1 * C6)...?


45

我想知道如何在Excel工作表中为以下长公式给出简洁的公式:

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

我使用求和函数还是为此使用其他函数?我认为使用带有SUM功能的冒号应该会有所帮助,但我不知道如何使用它。




7
在数学上,这称为点积或标量积。有用的条款,如果您需要使用自己喜欢的搜索引擎。
菲利普·肯德尔

内积:通常,我们会转而解决此问题,以便可以解决(A1 * B1 + A2 * B2 + C3 * B3 ....)....当然,这仅是表示法...
JosephDoggie

Answers:


110

您正在寻找SUMPRODUCT函数。

=SUMPRODUCT(A1:C1,A6:C6)

这将返回两个(或多个)范围内相应项目的乘积之和。

在此处输入图片说明

从链接到的Microsoft文档中可以看到,范围不必是单行或单列(尽管它们必须具有相同的尺寸)。

SUMPRODUCT最多可以将255个不同范围的值相乘。例如=SUMPRODUCT(A1:C1,A6:C6,A11:C11)与相同=A1*A6*A11+B1*B6*B11+C1*C6*C11


19

SUM函数仅添加元素而无法工作。您需要将值相乘,然后传递给SUM,例如=SUM(A1*A6, B1*B6, C1*C6, D1*D6, E1*E6)

当然,您也可以使用=A1*A6 + B1*B6 + C1*C6 + D1*D6 + E1*E6它产生与输入几乎相同的输入效果SUM

有许多更好的解决方案。一种方法是使用数组公式。您可以在那看到像您一样的确切示例:

数组公式语法

通常,数组公式使用标准公式语法。它们都以等号(=)开头,并且您可以在数组公式中使用大多数内置的Excel函数。关键区别在于,使用数组公式时,请按Ctrl+ Shift+ Enter输入公式。执行此操作时,Excel会用大括号括住数组公式-如果您手动键入大括号,则公式将转换为文本字符串,将无法使用。

数组函数是构建复杂公式的一种非常有效的方法。数组公式=SUM(C2:C11*D2:D11)与此相同:

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

要在您的情况下使用数组公式,可以键入(当然,您需要相应地更改数组的最后一个元素)

=SUM(A1:E1*A6:E6)

然后按Ctrl+ Shift+Enter


数组公式是一个非常强大的工具。但是请小心使用。每次需要编辑时,都不要忘记按Ctrl+ Shift+Enter

为什么要使用数组公式?

如果您有在Excel中使用公式的经验,则知道可以执行一些相当复杂的操作。例如,您可以计算任何给定年份的贷款总成本。您可以使用数组公式执行复杂的任务,例如:

  • 计算一系列单元格中包含的字符数。

  • 仅对满足某些条件的数字求和,例如范围内的最小值或介于上下边界之间的数字。

  • 将值范围中的每n个值相加。

数组公式还具有以下优点:

  • 一致性:如果从E2向下单击任何单元格,则会看到相同的公式。这种一致性可以帮助确保更高的准确性。

  • 安全性:您不能覆盖多单元数组公式的组成部分。例如,单击单元格E3,然后按Delete。您必须选择整个单元格范围(E2至E11)并更改整个数组的公式,或者将数组保持原样。作为一项附加的安全措施,您必须按Ctrl+ Shift+ Enter确认对公式的更改。

  • 较小的文件大小:您通常可以使用单个数组公式而不是多个中间公式。例如,工作簿使用一个数组公式来计算E列中的结果。如果使用标准公式(例如= C2 * D2,C3 * D3,C4 * D4…),则将使用11个不同的公式来计算相同的结果。

由于访问模式是已知的,因此速度也更快。现在,无需分别进行11种不同的计算,而是可以利用CPU中的多个内核和SIMD单元将其矢量化并并行完成


7
但是,请注意,数组函数非常脆弱。例如,如果复制并粘贴它们,则可能会造成严重损坏。通常,如果它们很大,则没有强制更新就无法正确更新它们。强大的功能,但与常规公式相比却有些固执。
JKreft

3
@StianYttervik:我认为答案很有用。如果有人用这种公式打开工作表却从未见过该怎么办?这个答案对那些用户会有所帮助。
Bad_Bishop

3
@StianYttervik数组公式是正确使用的有力工具。它一点也不慢,因为可以更轻松地对其进行优化和向量化。而且可以节省内存。甚至Google文档都支持它。而且不要回复这个。我不会再回应了
phuclv

2
@StianYttervik某些函数(例如MOD)将导致SUMPRODUCT中断,然后您必须将其替换为Array公式。更不用说每个版本的Office都已添加了更常用的数组公式作为官方功能(例如,MAXIFS在365中)。如果数组公式缓慢,笨拙且中断,则可能需要优化代码。当然,由于PowerQuery是附加的外接程序扩展,许多公司(由于各种原因)不会在企业构建包中包括它,因此对于分布式业务而言,它是劣等的解决方案。
Chronocidal

1
@Chronocidal是的,有一些情况,但是很少。或数据模型。或多维数据集功能。或以上所有。数组和逐行计算/执行无法衡量。
斯蒂安·伊特维克

7

另一种方法是将表达式= A1 * A6放在A7中,并根据需要直接复制,然后对$ 7 $行求和以得到最终答案。它不会像您想要的那样在一个单元中执行此操作,但是有时拥有中间产品很方便。我用过两个版本。这对我来说更像Excel,但您的口味可能有所不同。


1

如果将数字列表放在列而不是行中(例如两列A和B),则可以使用= Sumproduct(A:A,B:B)函数。它将为您提供与A和B列中的数字一样多的乘积。

您可以根据需要在Sumproduct函数中使用任意多的列


2
Sumproduct(1:1,2:2)对行的工作方式也相同。
马塔·朱哈斯(MátéJuhász)

0

如果第1行和第6行除了您想要的内容之外没有其他内容SUMPRODUCT(),则可以使用此注释中提到的想法。在您的问题中概述的情况下,您将使用=SUMPRODUCT(1:1,6:6)


4
除了在答案和评论中已经输入的内容之外,这实际上并没有提供其他信息。
马塔·朱哈斯(MátéJuhász)

1
@MátéJuhász-什么答案提供了我的答案?您对@AjayC SUMPRODUCT(1:1,2:2)提供的答案的评论给出了答案,我根据该评论给出了答案,阐述了如何根据原始问题使用它以及对此有何限制。
克里斯·罗杰斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.