Excel - 从同一列中取出两个数组

时间:2016-07-12 22:16:52

标签: excel excel-formula

我正在寻找一种方法来生成从同一列值派生的两个数组之间的sumproduct。例如:

A     B     C
1     FC    100
1     ST    5
2     FC    120
2     ST    3
3     FC    26
3     ST    7

在这种情况下,我需要一个计算(100 * 5)+(120 * 3)+(26 * 7)的公式,换句话说,当列B是“FC”时,在C列中执行值的产品当列B为“ST”时,列C中的值和值。

我已经搜索了很长一段时间,但一直无法找到合适的答案。任何帮助,将不胜感激。谢谢

2 个答案:

答案 0 :(得分:3)

正如斯科特克拉纳评论的那样(请接受他的回答,如果他写了一个):

SUMPRODUCT((B1:B5="FC")*(C1:C5*C2:C6))

此方法使用数组引用,将它们相乘,然后获取结果的SUMPRODUCT。从第二组嵌套术语开始:

  • C1:C5返回数组[100,5,120,3,26]
  • C2:C6(偏移一行)返回[5,120,3,26,7]

将这些数组相乘得到中间数组:

  • [500,600,360,78,182]

C列中的每个数字乘以后面的数字。但是,只有每个其他结果(由B列中的值"FC"表示)才包含在最终总和中。这是使用另一个嵌套术语完成的,该术语按顺序测试指定范围的每个单元格的值:

  • B1:B5="FC"返回数组[TRUE,FALSE,TRUE,FALSE,TRUE]

Excel在乘法时将TRUE/FALSE值视为1/0(尽管不是加法/减法),因此SUMPRODUCT函数会看到:

  • [1,0,1,0,1]*[500,600,360,78,182] => [500,0,360,0,182]

然后添加结果产品的值:

  • 500 + 0 + 360 + 0 + 182 = 1042

答案 1 :(得分:1)

对于这个具体的例子。

{=SUM((IF(B1:B6="FC",C1:C6,0)*IF(B2:B7="ST",C2:C7,0)))}

仅当FC和ST在示例中交替时才会起作用。如果没有,您可以通过主要对列A和第二列进行排序来快速更改它以适应此格式。

注意第二个if语句中的数组被一个单元格偏移。这允许阵列以所需的方式相乘。此外,由于它是一个数组公式,请确保在将其放入单元格时使用CTRL + SHIFT + Enter。