SUMPRODUCT函數(shù)的含義為在給定的幾組數(shù)組中,將數(shù)組間對(duì)應(yīng)的元素相乘,并返回乘積之和。按我的理解就是兩個(gè)以上的數(shù)組乘積之和。例如,公式為:=SUMPRODUCT(A2:A4, B2:B4)就相當(dāng)于=A2*B2+A3*B3+A4*B4,兩個(gè)區(qū)域用逗號(hào)隔開(kāi),不過(guò)用乘號(hào)也是沒(méi)有問(wèn)題的。似乎也只有這個(gè)函數(shù)才有這種對(duì)應(yīng)元素之間先行捉對(duì)計(jì)算的功能。
1、條件求和時(shí)條件區(qū)域與求和區(qū)域之間可以用逗號(hào),也可以用乘號(hào),因?yàn)闊o(wú)論是逗號(hào)還是乘號(hào),都是將數(shù)組中對(duì)應(yīng)元素相乘,再取乘積之和。但是,條件之間是必須用乘號(hào)的,如果用逗號(hào)則得到錯(cuò)誤結(jié)果。例如,公式為:=SUMPRODUCT((A2:A9=A3)*(B2:B9=B3)*C2:C9)也可以寫(xiě)成:=SUMPRODUCT((A2:A9=A3)*(B2:B9=B3), C2:C9),如果寫(xiě)成:=SUMPRODUCT((A2:A9=A3), (B2:B9=B3), C2:C9),則結(jié)果錯(cuò)誤,為什么呢?
首先我們把上面的問(wèn)題簡(jiǎn)化,假定每個(gè)數(shù)組只有一個(gè)值,我們看看計(jì)算結(jié)果,即:
SUMPRODUCT({TRUE}*{TRUE}*{8})=8
SUMPRODUCT({TRUE}*{TRUE}, {8})=8
SUMPRODUCT({TRUE}, {TRUE}, {8})=0
注意,上面的公式中大括號(hào)表示一個(gè)數(shù)組,SUMPRODUCT函數(shù)處理每一個(gè)參數(shù)數(shù)組的的元素時(shí),其中的非數(shù)值型值(文本、邏輯)是作為0來(lái)處理的,所以用逗號(hào)分隔時(shí)結(jié)果為0,如果用乘號(hào),{TRUE}*{TRUE}作為一個(gè)表達(dá)式先行計(jì)算,其計(jì)算結(jié)果是1(按true=1,false=0計(jì)算)。
2、條件求和時(shí),如果求和區(qū)域出現(xiàn)文本型值,則必須用逗號(hào),用乘號(hào)則報(bào)錯(cuò),我們看一下計(jì)算結(jié)果,即:
SUMPRODUCT({TRUE;FALSE}*{TRUE;TRUE}, {8;”song"})=8
SUMPRODUCT({TRUE;FALSE}*{TRUE;TRUE}*{8;”song"})=#VALUE!
同上,因?yàn)閿?shù)組區(qū)域中的文本信息是作為0來(lái)處理的,所以第一個(gè)公式得到正確的結(jié)果。第二個(gè)公式因?yàn)橐扔?jì)算表達(dá)式的值,所以碰到了文本作為乘數(shù)的情況,所以結(jié)果會(huì)報(bào)錯(cuò)。
3、條件求和時(shí),如果求和區(qū)域不是一列而是一個(gè)矩形區(qū)域時(shí),則必須用乘號(hào),用逗號(hào)會(huì)報(bào)錯(cuò)。即
SUMPRODUCT((A2:A9=A3)*(B2:B9=B3)*C2:F9)=正常值
SUMPRODUCT((A2:A9=A3)*(B2:B9=B3), C2:F9)=#VALUE!
對(duì)于以上不同的公式寫(xiě)法,可以用“公式求值”來(lái)看看公式的運(yùn)算情況,從而探知為什么會(huì)出現(xiàn)這樣的結(jié)果。
綜上所述,SUMPRODUCT函數(shù)各數(shù)組間盡量用逗號(hào)隔離,條件求和的標(biāo)準(zhǔn)寫(xiě)法應(yīng)該是:
SUMPRODUCT((條件1)*(條件2)*(條件3)*…*(條件n), 求和區(qū)域)
————————————————
原文鏈接:https://blog.csdn.net/iamlaosong/article/details/54315876