SUMPRODUCT(SUMIF()) - 这是如何工作的?

时间:2012-07-14 00:40:21

标签: excel sum excel-formula

第1部分:

我能够构建一个完全符合我想要的公式(来自一些例子),但是,我无法弄清楚它究竟是如何工作的。我有,从单元格A1开始:

Price   $
table   20
chair   10

Invoice Quantity
table   17
chair   1
chair   2
table   3

我想要的是发票的最终总数(430),按每个项目的数量*价格计算(17 * 20 + 1 * 10 + 2 * 10 + 3 * 20)。以下公式正确地做到了这一点:

=SUMPRODUCT(B6:B9,SUMIF(A2:A3,A6:A9,B2:B3))

我理解SUMPRODUCT和SUMIF的基础知识。但是在这里,我对SUMIF范围的论证是A2:A3,这让我认为SUMIF将遍历A2和A3,而不是通过A8:A11(这是标准)。是什么给了什么?

编辑:不清楚的部分是,当前两个参数具有不同的维度时,SUMIF究竟做了什么(它的迭代模式是什么)(这里,范围是2个单元格,而标准是4个单元格)。另外,SUMIF的“输出”是什么?数组?什么尺寸?

第2部分:

另外,如果我忽略了数量而只是想在每次看到一张桌子时加上20,每当我看到一把椅子时都要加10,我想我会这么做:

=SUMIF(A2:A3,A6:A9,B2:B3)

但是这不起作用,我必须用SUMPRODUCT()将它封装起来才能正常工作并正确评估为60.将它包含在SUM中也不起作用(可能是因为SUMIF没有返回一个数组?)为什么?

我已经阅读了很多教程但仍然无法理解这一点,并且非常感谢对这两种情况的清晰,直观的解释。谢谢。

2 个答案:

答案 0 :(得分:10)

SUMIF可以生成一系列结果。如果你拿我的配方
=SUMIF(A6:A9,A2:A3,B6:B9)
它说

对于A2中的标准(即表格)   - 看看A6:A9
  - 在匹配表的地方,将B6中相应的值相加:B9
  - 返回20(即17 + 0 + 0 + 3)
  - 它存储在数组的第一个位置

然后是A3(即椅子)的标准
  - 看看A6:A9
  - 在匹配表的地方,将B6中相应的值相加:B9
  - 返回3(即0 + 1 + 2 + 0)
  - 它存储在数组的第二个位置

所以SUMIF的结束数组是{20:3}

您可以通过在Excel的公式栏中突出显示SUMIF公式,然后按F9

来查看数组结果

然后使用SUMPRODUCTSUMIF中的计数乘以B2:B3中的$值以获得总金额

= {20; 3} * {20:10}
= 20 * 20 + 3 * 10
= 430

第1部分
而不是
SUMIF(A2:A3,A6:A9,B2:B3)
它产生一个四元素阵列 = {20; 10; 10; 20}
(对应于桌子;椅子;椅子;桌子)

你应该使用
SUMIF(A6:A9,A2:A3,B6:B9)
它将B6:B9中的值与A2中的两个标准相加:A3给出了所需的结果
= {20; 3}
(对应于桌子;椅子)

然后使用SUMPRODUCT来加权数组,即 =SUMPRODUCT(SUMIF(A6:A9,A2:A3,B6:B9),B2:B3) = {20; 3} * {20:10}
= 430

第2部分
使用COUNTIF返回主席和桌子数量的数组,然后使用SUMPRODUCT相乘vales =SUMPRODUCT(B2:B3,COUNTIF(A6:A9,A2:A3))
 = {20; 10} * {2; 2}
 = 60

答案 1 :(得分:0)

嗯,你只有一个小错误:

  

可能是因为SUMIF没有返回数组?

SUMIF可以使用数组,这就是为什么你的公式 SUMPRODUCT(SUMIF())首先工作,SUMIF显示一个数组,你必须选择一组单元格(如C6:C9)输入公式并使用CTRL + SHIFT + ENTER而不是ENTER。这会生成一个“数组公式”,用大括号{}标识(只能用CTRL + SHIFT + ENTER输入,不能手动输入)并显示数组公式和结果