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






