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