如果范围中存在条件范围,如何使用SUMIFS和SUMPRODUCT函数**和乘数列**来求和值?

时间:2018-01-03 01:33:58

标签: excel excel-formula google-sheets sumifs

此问题涉及this Stack Overflow question

这是原来的问题:

A   B    C 
a   3    d 
b   1    a 
c   8    e 
d   5    
  

我想使用SUMIFS函数,求和范围为B1:B4,如果列A中存在列C中的相应值,则对B列中的值求和1}},在这种情况下,总和将是3 + 5 = 8

答案结果是:

=SUMPRODUCT(SUMIF(A1:A4,C1:C3,B1:B4)) 

我想创建相同的结果,但在其中一个范围内使用乘数。

这是我的问题:

A   B   C   D
a   3   d   3
b   1   a   1
c   8   e   1
d   5   d   3

我唯一想做的就是添加一个作为乘数的范围D1:D3。在这种情况下,我想要的总和是(3x3)+(5x3)= 24

一个挑战是在下面链接的“测试数据”谷歌表中,范围是不同的大小。 “测试数据”表是一个例子,说明我希望根据“乘数列”所规定的食物供应次数计算每日卡路里的总量。

我希望C2:C27中的数字是乘数,并计入D36中的总数。

例如,如果我吃了2份牛肉,那么2份价值的牛肉卡路里将显示在数据下方的每日总数中。目前,使用公式= SUMPRODUCT(SUMIF(Meal_Items!$ A $ 2:$ A $ 100,$ D $ 2:$ D $ 28,Meal_Items!$ B $ 2:$ B $ 100)),只加1份牛肉。

Test Data

请参阅上面链接的测试数据

3 个答案:

答案 0 :(得分:1)

原始问题也可以用这个公式来解决

=SUMPRODUCT((COUNTIF(C1:C3,A1:A4)>0)+0,B1:B4)

使用该版本添加一个或多个乘数列

是一件简单的事情

=SUMPRODUCT((COUNTIF(C1:C3,A1:A4)>0)+0,B1:B4,D1:D4)

鉴于评论中的讨论,此公式应该在Excel或Google工作表中执行您想要的操作

=SUMPRODUCT(IFERROR(LOOKUP($D$2:$D$28,Meal_Items!$A$2:$A$100‌​,Meal_Items!$B$2:$B$‌​100),0),$C$2:$C$28)

答案 1 :(得分:0)

如果您实际上已将A,B,C等放入标题行(第1行),那么在您正确重命名标题列标签或使用数据范围引用代替完整列引用之前,这将无效提供了。

=B2*INDEX(B:B, MATCH(A2, A:A, 0))+B2*INDEX(B:B, MATCH(C2, A:A, 0))

答案 2 :(得分:0)

E1 中输入:

=IF(COUNTIF(C$1:C$4,A1)>0,1,0)

并复制下来。然后在另一个单元格中:

=SUMPRODUCT((E1:E4)*(D1:D4)*(B1:B4))

enter image description here

数据位于列 B 中。权重位于列 D 中。标准位于列 E