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

第1部分:

我能够构build一个完全符合我的需求的公式(从一些示例中),但是,我无法弄清楚它的工作原理。 我有,从单元格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不返回一个数组? )为什么?

我已经阅读了大量的教程,但仍然无法理解这一点,对于这两种情况的清晰,直观的解释,我将非常感激。 谢谢。

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乘以值
=SUMPRODUCT(B2:B3,COUNTIF(A6:A9,A2:A3))
= {20; 10} * {2; 2}
= 60

那么你只有一个小小的错误:

可能是因为SUMIF不返回数组?

SUMIF可以与数组一起工作,这就是为什么你的公式SUMPRODUCT(SUMIF())工作在第一位,SUMIF显示一个数组,你必须select一组单元格(如C6:C9)input公式并使用CTRL + SHIFT + ENTER而不是只有ENTER。 这会生成一个“数组公式”,用花括号{}(只能用CTRL + SHIFT + ENTERinput,不能手动input)显示数组公式和结果