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