Answers:
您似乎遇到了问题,因为您误解了该SUMPRODUCT()
功能的确切运作方式。
它的作用是将所有参数的各个元素相乘,然后对结果数组求和。
以下面的例子为例:
=SUMPRODUCT(A1:A3, B1:B3, C1:C3, D1:D3)
评估此公式的两个步骤是:
=SUMPRODUCT({A1*B1*C1*D1; A2*B2*C2*D2; A3*B3*C3*D3})
=A1*B1*C1*D1 + A2*B2*C2*D2 + A3*B3*C3*D3
对于您的特定情况,您实际需要做的是获得两个 sumproducts 的总和:
=SUM(SUMPRODUCT(duration1,number1),SUMPRODUCT(duration2,number2))/SUM(number1,number2)
对于您提供的示例工作簿,公式F5
将为:
=SUM(SUMPRODUCT('CHAT US Raw Data'!I6,'CHAT US Raw Data'!P6),SUMPRODUCT('CHAT US Raw Data'!T6,'CHAT US Raw Data'!U6))/SUM('CHAT US Raw Data'!I6,'CHAT US Raw Data'!T6)
请注意,这相当于在SUMPRODUCT()
函数内部显式执行乘法,只使用函数对结果数组求和(如第1部分问题的答案中所做的那样):
=SUM(SUMPRODUCT(duration1*number1),SUMPRODUCT(duration2*number2))/SUM(number1,number2)
以实际公式F5
为:
=SUM(SUMPRODUCT('CHAT US Raw Data'!I6*'CHAT US Raw Data'!P6),SUMPRODUCT('CHAT US Raw Data'!T6*'CHAT US Raw Data'!U6))/SUM('CHAT US Raw Data'!I6,'CHAT US Raw Data'!T6)
此公式仍需要根据您之前的问题进行调整,以检查匹配日期(以及第一个匹配的学生姓名,如果仍然适用)。
对于股息,我们可以添加额外的日期检查期限。
SUM()
但是,在添加日期检查之前,需要修改除数函数。我们需要两个sumif函数的总和(假设您希望扩展多行的公式):
=SUM(SUMPRODUCT((date1=date)*duration1*number1),SUMPRODUCT((date2=date)*duration2*number2))
/SUM(SUMIF(date1,date,number1),SUMIF(date2,date,number2))
以实际公式F5
为:
=SUM(SUMPRODUCT(('CHAT US Raw Data'!H6=E5)*'CHAT US Raw Data'!I6*'CHAT US Raw Data'!P6),SUMPRODUCT(('CHAT US Raw Data'!S6=E5)*'CHAT US Raw Data'!T6*'CHAT US Raw Data'!U6))/SUM(SUMIF('CHAT US Raw Data'!H6,E5,'CHAT US Raw Data'!I6),SUMIF('CHAT US Raw Data'!S6,E5,'CHAT US Raw Data'!T6))
在SUMPRODUCT()
(使用结果隐式布尔强制)内手动执行乘法的替代方法是使用双负一元运算符将日期检查明确强制为1和0。例如,(date1=date)
将成为--(date1=date)
:
=SUM(SUMPRODUCT(--(date1=date),duration1,number1),SUMPRODUCT(--(date2=date),duration2,number2))
/SUM(SUMIF(date1,date,number1),SUMIF(date2,date,number2))
用实际公式:
=SUM(SUMPRODUCT(--('CHAT US Raw Data'!H6=E5),'CHAT US Raw Data'!I6,'CHAT US Raw Data'!P6),SUMPRODUCT(--('CHAT US Raw Data'!S6=E5),'CHAT US Raw Data'!T6,'CHAT US Raw Data'!U6))/SUM(SUMIF('CHAT US Raw Data'!H6,E5,'CHAT US Raw Data'!I6),SUMIF('CHAT US Raw Data'!S6,E5,'CHAT US Raw Data'!T6))
作为最后一点,sumif除数有相同的sumproduct版本。
例如,
SUM(SUMIF(date1,date,number1),SUMIF(date2,date,number2))
相当于
SUM(SUMPRODUCT((date1=date)*number1),SUMPRODUCT((date2=date)*number2))
以及
SUM(SUMPRODUCT(--(date1=date),number1),SUMPRODUCT(--(date2=date),number2))
SUM(E4*D4,I4*J4)/SUM(D4,I4)
?