前段時(shí)間, 過用SUMPRODUCT函數(shù)分部門統(tǒng)計(jì)數(shù)據(jù)、處理分類排名、統(tǒng)計(jì)月份缺勤人數(shù)等用法,可以看到這個(gè)函數(shù)在處理“分類統(tǒng)計(jì)”問題上幾乎所向披靡,無所不能。
但,昨天,朋友在用SUMPRODUCT函數(shù)分部門、分產(chǎn)品統(tǒng)計(jì)銷量的時(shí)候,卻出現(xiàn)的問題。
總結(jié)如下:
問題分析
函數(shù)解釋:
SUMPRODUCT函數(shù)是Excel中的數(shù)學(xué)函數(shù),用于在給定的幾組數(shù)組中,將數(shù)組間對(duì)應(yīng)的元素相乘,并返回乘積之和。
其基本語法為:
SUMPRODUCT(array1,[array2], [array3], …)
SUMPRODUCT 函數(shù)語法具有下列參數(shù):
Array1:必需。其相應(yīng)元素需要進(jìn)行相乘并求和的第一個(gè)數(shù)組參數(shù)。
Array2, array3,…:可選。 2 到 255 個(gè)數(shù)組參數(shù),其相應(yīng)元素需要進(jìn)行相乘并求和。
特別注意:
數(shù)組參數(shù)必須具有相同的維數(shù)。 否則,函數(shù) SUMPRODUCT 將返回 #VALUE! 錯(cuò)誤值#REF!。
本題中的解釋
本題中有三個(gè)數(shù)組,返回值分別是:
($A$2:$A$15=F2);
{TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
($B$2:$B$15=G2);
{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE}
$C$2:$C$15:
{5;4;2;3;1;無;3;5;2;2;5;5;2;5}
本題中,三個(gè)公式中,每個(gè)數(shù)據(jù)之間的計(jì)算符號(hào)不一樣,要么“*”,要么“,”,符號(hào)不同,結(jié)果也不相同。
第一個(gè)公式:
H2單元格內(nèi)的公式:
=SUMPRODUCT(($A$2:$A$15=F2),($B$2:$B$15=G2),$C$2:$C$15)
結(jié)果返回值是0,原因分析:
三個(gè)數(shù)組之間都是逗號(hào)”,”,返回零值的主要原因在于前兩個(gè)數(shù)組,這兩個(gè)數(shù)組返回的都是邏輯值,中間如果用”,”,互相獨(dú)立的兩個(gè)邏輯數(shù)據(jù)之間不能進(jìn)行對(duì)應(yīng)位置處邏輯值相乘。
而如果改成=SUMPRODUCT(($A$2:$A$15=F2)*1,($B$2:$B$15=G2)*1,$C$2:$C$15),通過*1,先把邏輯值變成數(shù)值,中間再用”,”,對(duì)應(yīng)位置處數(shù)據(jù)就可以相乘了。
第二個(gè)公式:
I2單元格內(nèi)的公式:
=SUMPRODUCT(($A$2:$A$15=F2)*($B$2:$B$15=G2)*$C$2:$C$15)
結(jié)果返回值是#VALUE,原因分析:
錯(cuò)誤的原因是第三個(gè)數(shù)組內(nèi)有文本,文本不能直接參與求和。
第三個(gè)公式:
J2單元格內(nèi)的公式:
=SUMPRODUCT(($A$2:$A$15=F2)*($B$2:$B$15=G2),$C$2:$C$15)
結(jié)果返回值是正確結(jié)果,原因分析:
前兩上數(shù)組之間對(duì)應(yīng)位置的邏輯值相乘,轉(zhuǎn)變成數(shù)組
{1;0;0;0;0;0;0;0;0;0;0;1;0;0}。
第三個(gè)數(shù)組$C$2:$C$15前加“,”,公式用逗號(hào)分隔,相乘區(qū)域中有文本,則當(dāng)0處理。
總之
SUMPRODUCT多條件求和,寫成如下格式:
=SUMPRODUCT((條件一)*(條件二)*……*(條件N),求和范圍)