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

Pon*_*ars 5 excel sum excel-formula

第1部分:

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

Price   $
table   20
chair   10

Invoice Quantity
table   17
chair   1
chair   2
table   3
Run Code Online (Sandbox Code Playgroud)

我想要的是发票的最终总数(430),按每个项目的数量*价格计算(17*20 + 1*10 + 2*10 + 3*20).以下公式正确地执行此操作:

=SUMPRODUCT(B6:B9,SUMIF(A2:A3,A6:A9,B2:B3))
Run Code Online (Sandbox Code Playgroud)

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

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

第2部分:

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

=SUMIF(A2:A3,A6:A9,B2:B3)
Run Code Online (Sandbox Code Playgroud)

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

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

bre*_*tdj 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来查看数组结果

然后使用在B2:B3中的$值中的SUMPRODUCT多个计数SUMIF来获得总计美元

= {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