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

2019-07-30 10:18发布

第1部分:

我能够构建一个公式,不正是我想要的(一些例子),不过不失,我无法弄清楚它究竟是如何工作的。 我有,从单元格A1:

Price   $
table   20
chair   10

Invoice Quantity
table   17
chair   1
chair   2
table   3

我想要针对其计算为数量*价格为每个项目(17 * 20 + 1 * 10 + 2×10 + 3 * 20)发票最终总(430)是。 下式正确地执行此操作:

=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不返回数组不起作用包围呢? )为什么?

我读了一堆教程,但还是无法理解这一点,将不胜感激。对于这两种情况下,一个清晰,直观的解释。 谢谢。

Answer 1:

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看到数组结果

然后使用SUMPRODUCT多个计数在SUMIF由$值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



Answer 2:

那么你只需要一个小的失误:

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

SUMIF可以使用数组,这就是为什么你式SUMPRODUCT(SUMIF())在第一个地方工作,以SUMIF显示阵列必须选择一组细胞(例如C6:C9)输入的公式,使用CTRL + SHIFT + ENTER而不是只ENTER键。 这产生“阵列fomula”,由大括号{}标识(那些只能与CTRL + SHIFT输入+ Enter,没有manualy),并显示该阵列式和结果



文章来源: SUMPRODUCT( SUMIF() ) - How does this work?