如果范围内存在条件范围,如何使用 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牛肉的份量是加权的。
查看上面链接的测试数据集
如果您实际上已经将 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)
此题参考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 isB1:B4
, if the corresponding value in columnA
exists in columnC
, sum the values in columnB
, in this case the sum will be3 + 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牛肉的份量是加权的。
查看上面链接的测试数据集
如果您实际上已经将 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)