我能够构建一个完全符合我想要的公式(来自一些例子),但是,我无法弄清楚它究竟是如何工作的。我有,从单元格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的“输出”是什么?数组?什么尺寸?
另外,如果我忽略了数量而只是想在每次看到一张桌子时加上20,每当我看到一把椅子时都要加10,我想我会这么做:
=SUMIF(A2:A3,A6:A9,B2:B3)
但是这不起作用,我必须用SUMPRODUCT()将它封装起来才能正常工作并正确评估为60.将它包含在SUM中也不起作用(可能是因为SUMIF没有返回一个数组?)为什么?
我已经阅读了很多教程但仍然无法理解这一点,并且非常感谢对这两种情况的清晰,直观的解释。谢谢。
答案 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
来查看数组结果然后使用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
相乘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输入,不能手动输入)并显示数组公式和结果