完美Excel公眾號(hào):excelperfect
本文資料來(lái)源于xlDynamic.com,供參考。
工作表有一類(lèi)最基本的函數(shù)是基于某條件統(tǒng)計(jì)或匯總結(jié)果,例如COUNTIF函數(shù)或SUMIF函數(shù),都是相當(dāng)有用和靈活的函數(shù),但僅局限于單條件。而本文將著重探討基于多條件獲得結(jié)果的函數(shù)——SUMPRODUCT函數(shù)。
SUMPRODUCT函數(shù)是Excel中最“多才多藝”的函數(shù)之一。其基本功能是,數(shù)組中相應(yīng)的項(xiàng)目相乘并返回結(jié)果之和。下面將介紹SUMPRODUCT函數(shù)經(jīng)典的用法。
SUMPRODUCT函數(shù)的標(biāo)準(zhǔn)用法
SUMPRODUCT函數(shù)的基本用法是:一個(gè)數(shù)組中的每個(gè)值與另一個(gè)數(shù)組中相應(yīng)的值相乘,返回乘積的和。
示例1:如果單元格區(qū)域A9:A11中分別包含值1、2、3,單元格區(qū)域B9:B11中分別包含值10、20、30,那么
=SUMPRODUCT(A9:A11,B9:B11)
返回結(jié)果140,或者(1*10) (2*20) (3*30)=10 40 90=140。
SUMPRODUCT函數(shù)的“進(jìn)化”用法
在Excel中,有兩個(gè)非常有用的支持條件統(tǒng)計(jì)和求和的函數(shù),分別是COUNTIF函數(shù)和SUMIF函數(shù),但僅支持單個(gè)條件測(cè)試。
舉個(gè)簡(jiǎn)單的雙條件測(cè)試?yán)?。例如,公?/span>=COUNTIF(A1:A10,>=10)-COUNTIF(A1:A10,>20)將得到在單元格區(qū)域A1:A10中介于10和20之間有多少項(xiàng)。然而,這種摸擬雙條件測(cè)試的方法是有局限的,它不能處理不同的單元格區(qū)域或者更多的條件。
為了理解SUMPRODUCT函數(shù)的使用,先舉個(gè)例子。示例數(shù)據(jù)如下:
下面的公式很容易得出“Ford”的數(shù)量:
=COUNTIF(A1:A10,'Ford')
返回的結(jié)果為4。
同樣,下面的公式直接獲得“Ford”銷(xiāo)售價(jià)格之和:
=SUMIF(A1:A10,'Ford',C1:C10)
返回的結(jié)果為33873。
然而,假設(shè)想要統(tǒng)計(jì)6月份“Ford”的銷(xiāo)售數(shù)量,使用下面的數(shù)組公式:
=SUM(IF(A1:A10='Ford',IF(B1:B10='June',1,0),0))
輸入后同時(shí)按下Ctrl Shift Enter鍵,返回結(jié)果3。
同樣,要統(tǒng)計(jì)6月份“Ford”銷(xiāo)售價(jià)格之和,使用下面的數(shù)組公式:
=SUM(IF(A1:A10='Ford',IF(B1:B10='June',C1:C10,0),0))
返回結(jié)果27000。
下面我們看看使用SUMPRODUCT函數(shù)來(lái)獲取結(jié)果的情形。下面的公式:
=SUMPRODUCT((A1:A10='Ford')*(B1:B10='June'))
得到6月份“Ford”的銷(xiāo)售數(shù)量,結(jié)果為3。
下面的公式:
=SUMPRODUCT((A2:A10='Ford')*(B2:B10='June')*(C2:C10))
得到6月份“Ford”銷(xiāo)售價(jià)格之和。
“*”號(hào)用作AND(與)運(yùn)算符,公式的其含義是單元格區(qū)域A2:A10中的值為“Ford”并且B2:B10中的值為“June”所對(duì)應(yīng)的C2:C10中的值相加。
然而,如果我們想在公式中使用OR(或)運(yùn)算符呢?使用“ ”號(hào)來(lái)代表OR運(yùn)算符。例如,下面的公式:
=SUMPRODUCT((A1:A10='Ford') (A1:A10='Renault'))
計(jì)算單元格區(qū)域A1:A10中為“Ford”或“Renault”的數(shù)量,結(jié)果為6。
SUMPRODUCT函數(shù)的優(yōu)點(diǎn)
正如上文所描述的,多條件測(cè)試是SUMPRODUCT函數(shù)的主要優(yōu)點(diǎn)。然而,SUMPRODUCT函數(shù)還有其它兩個(gè)優(yōu)點(diǎn):一個(gè)是它能夠處理關(guān)閉的工作簿中的數(shù)據(jù),不受源工作簿是否關(guān)閉的影響;另一個(gè)是能夠處理文本值以滿(mǎn)足需求。
例如,如果想在另一個(gè)工作簿中計(jì)算“Sumproduct函數(shù).xlsm”工作簿中的數(shù)據(jù),那么使用下面的公式計(jì)算該工作簿中大于15000的值的和。
=SUMIF([Sumproduct函數(shù).xlsm]Sheet1!$C$2:$C$10,'>15000')
此時(shí),如果“Sumproduct函數(shù).xlsm”工作簿關(guān)閉,再重新計(jì)算工作表是時(shí)該公式會(huì)返回#VALUE。同樣,如果“Sumproduct函數(shù).xlsm”工作簿已經(jīng)關(guān)閉后,再在其它工作簿中使用上面的公式,會(huì)返回#VALUE。
然而,使用SUMPRODUCT函數(shù)就不會(huì)存在上面的問(wèn)題。無(wú)論“Sumproduct函數(shù).xlsm”工作簿是否關(guān)閉,將下面的公式輸入到其它工作簿中,都會(huì)得到正確的結(jié)果。
=SUMPRODUCT(--('[Sumproduct函數(shù).xlsm]Sheet1'!$C$2:$C$10>15000),--('[Sumproduct函數(shù).xlsm]Sheet1'!$C$2:$C$10))
第二個(gè)主要的優(yōu)點(diǎn)是SUMPRODUCT函數(shù)能夠處理具有不同數(shù)據(jù)類(lèi)型文本的列。例子數(shù)據(jù)如下圖所示,在B列的第一行中是文字文本值作為標(biāo)題,其余行為數(shù)值。
如果使用下面的公式:
=SUMPRODUCT((A1:A4='x')*(B1:B4))
則會(huì)返回錯(cuò)誤#VALUE。
要忽略錯(cuò)誤,則要使用雙一元操作符(兩個(gè)減號(hào)):
=SUMPRODUCT(--(A1:A4='x'),(B1:B4))
返回正確的結(jié)果,本例中是4。
聯(lián)系客服