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

How to use SUMIFS and SUMPRODUCT function **with a multiplier column** for summing values if criteria range exists in a range?

此题参考this Stack Overflow question.

这是原题:

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

I want to use SUMIFS function, sum range is B1:B4, if the corresponding value in column A exists in column C, sum the values in column B, in this case the sum will be 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.

一个挑战是下面链接的 "Test Data" google sheet 中的范围大小不同。 "Test Data" sheet 是一个示例,说明我如何根据 "multiplier column."

规定的我吃的食物份数来计算每日总卡路里

我希望 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

查看上面链接的测试数据集

如果您实际上已经将 A、B、C 等放入 header 行(第 1 行),那么这将不起作用,直到您适当地重命名 header 列标签或使用数据范围引用代替我提供的完整列引用。

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

E1中输入:

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

然后抄下来。然后在另一个单元格中:

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

数据在B
D
权重在
列=21=]E

原题也可以用这个公式求解

=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:$D,Meal_Items!$A:$A0‌​,Meal_Items!$B:$B$‌​100),0),$C:$C)