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

ruk*_*uto 46 worksheet-function microsoft-excel

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

= (A1*A6)+(B1*B6)+(C1*C6)...
Run Code Online (Sandbox Code Playgroud)

我是使用 sum 函数还是为此使用其他函数?我认为将冒号与SUM函数一起使用应该会有所帮助,但我不知道如何使用它。

Bla*_*ood 109

您正在寻找SUMPRODUCT函数。

=SUMPRODUCT(A1:C1,A6:C6)
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

正如您从我链接到的 Microsoft 文档中看到的那样,范围不需要是单行或单列(尽管它们必须具有相同的维度)。

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


phu*_*clv 20

SUM函数将不起作用,因为它只是添加元素。传递给 SUM之前,您需要将值相乘=SUM(A1*A6, B1*B6, C1*C6, D1*D6, E1*E6)

当然,您也可以使用=A1*A6 + B1*B6 + C1*C6 + D1*D6 + E1*E6which 产生与SUM

有很多更好的解决方案。Blackwood 已经建议了其中之一。另一种替代方法是使用数组公式。您可以看到一个与 Microsoft 完全相同的示例:

数组公式语法

通常,数组公式使用标准公式语法。它们都以等号 (=) 开头,您可以在数组公式中使用大多数内置 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).
Run Code Online (Sandbox Code Playgroud)

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

=SUM(A1:E1*A6:E6)
Run Code Online (Sandbox Code Playgroud)

然后按Ctrl+ Shift+Enter

一旦掌握了数组公式的思想,它就可以应用于大多数其他公式,甚至可以忘记数组公式的存在 SUMPRODUCT

更新:

在许多情况下,较新的 Excel 版本甚至会自动使用数组公式

从 Office 365 的 2018 年 9 月更新开始,任何可以返回多个结果的公式都会自动将它们向下溢出或溢出到相邻单元格中。这种行为变化还伴随着几个新的动态数组函数。动态数组公式,无论是使用现有函数还是动态数组函数,只需在单个单元格中输入,然后按 Enter 确认。早些时候,遗留数组公式需要首先选择的整个输出范围内,则确认与式Ctrl+ Shift+ Enter。它们通常被称为 CSE 公式。

数组公式的准则和示例


数组公式是一个非常强大的工具。但是请谨慎使用。每次需要编辑的时候一定不要忘记按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认同)
  • @StianYttervik:我认为答案很有用。如果有人打开带有这种公式的工作表并且以前从未见过它怎么办?这个答案对这些用户会有帮助。 (3认同)
  • @StianYttervik 数组公式是正确使用的**强大**工具。它**一点也不慢**,因为它可以更容易地优化和矢量化。它节省了内存。甚至谷歌文档也支持它。并且不要回复这个。我不会再回复 (3认同)
  • @StianYttervik 某些函数(例如`MOD`)会导致`SUMPRODUCT` 中断,然后你必须用数组公式替换它。更不用说每个版本的 Office 都将更常用的数组公式添加为官方函数(例如 365 中的“MAXIFS”) 如果您的数组公式缓慢、笨拙且中断,您可能需要优化代码。而且,当然 - 由于 PowerQuery 是一个额外的插件扩展,许多公司(出于各种原因)不会将它包含在他们的企业构建包中,使其成为分布式业务目的的劣等解决方案。 (2认同)

小智 7

另一种方法是在 A7 中放入表达式 =A1*A6 并根据需要复制,然后将行 $7$ 相加以获得最终答案。它不像您想要的那样在一个单元格中完成,但有时拥有中间产品很方便。两个版本我都用过。这个对我来说感觉更优秀,但你的品味可能会有所不同。