6

第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(这是标准)。是什么赋予了?

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

第2部分:

此外,如果我忽略数量,只想在看到桌子时添加 20 并且每当看到椅子时添加 10,我想我会这样做:

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

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

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

4

2 回答 2

11

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)
which 产生
={20;10;10;20}的四元素数组
(对应于 table;chair;chair;table)

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

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

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

于 2012-07-14T05:25:54.613 回答
0

那么你只有一个小错误:

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

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

于 2012-07-14T01:27:33.963 回答