excel函数求相邻单元格两两相乘之积的和,需要在列A中放置列B至列U中的值两两相乘的结果之和,例如:
excel函数求相邻单元格两两相乘之积的和,需要在列A中放置列B至列U中的值两两相乘的结果之和,例如:
A2 = (B2*C2)+(D2*E2)+(F2*G2)+…+(T2*U2)
A3 = (B3*C3)+(D3*E3)+(F3*G3)+…+(T3*U3)
有没有不需要列出该行中的每个单元格的更简单的公式?
示例数据如下图1所示。
图1
先不看答案,自已动手试一试。
公式
如果数据在单元格区域B2:U2中,那么可以在单元格A2中输入公式:
=SUMPRODUCT(B2:U2*C2:V2*(MOD(COLUMN(B2:U2),2)=0))
公式解析
从公式中可以看到,SUMPRODUCT函数包含了3个数组:
数组1:B2:U2
数组2:C2:V2
数组3:(MOD(COLUMN(B2:U2),2)=0)
其中:
数组1就是单元格区域B2:U2中的值,即:
{10,20,10,20,10,20,10,20,10,20,10,20,10,20,10,20,10,20,10,20}
数组2是单元格区域C2:V2中的值,比数组1向右偏移了1列。即:
{20,10,20,10,20,10,20,10,20,10,20,10,20,10,20,10,20,10,20,0}
数组3:(MOD(COLUMN(B2:U2),2)=0)
可转换为:
(MOD({2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21},2)=0)
对生成的数组求余:
({0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1}=0)
比较后得到数组:
{TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE}
SUMPRODUCT函数将3个数组中相对应的值分别相乘:
{10*20*True, 20*10*False , 10*20*True,20*10*False , 10*20*True, 20*10*False , 10*20*True, 20*10*False , 10*20*True,20*10*False , 10*20*True, 20*10*False , 10*20*True, 20*10*False , 10*20*True,20*10*False , 10*20*True, 20*10*False , 10*20*True, 20*10*False}
可以看到,当3个数组相乘时,只有数组1和2中的奇数项将由SUMPRODUCT求值,因为所有偶数项都乘以False(=0),地跳开了相乘中的重复列,因此,上面的数组转换为:
{200,0,200,0,200,0,200,0,200,0,200,0,200,0,200,0,200,0,200,0}
即:
SUMPRODUCT{200,0,200,0,200,0,200,0,200,0,200,0,200,0,200,0,200,0,200,0}
结果为:
2000