Excel多條件求和 & SUMPRODUCT函式用法詳解
龍逸凡注:歡迎轉貼,但請註明作者及出處。
一、 基本用法
在給定的幾組陣列中,將陣列間對應的元素相乘,並返回乘積之和。
語法:
SUMPRODUCT(array1,array2,array3, ...)
Array1, array2, array3, ... 為 2 到 30 個數組,其相應元素需要進行相乘並求和。
公式:=SUMPRODUCT(A2:B4, C2:D4)
A B C D
1 Array 1 Array 1 Array 2 Array 2
2 3 4 2 7
3 8 6 6 7
4 1 9 5 3
公式解釋:兩個陣列的所有元素對應相乘,然後把乘積相加,即 3*2 + 4*7 + 8*6 + 6*7 + 1*5 + 9*3。計算結果為156
二、 擴充套件用法
1、 使用SUMPRODUCT進行多條件計數
語法:
=SUMPRODUCT((條件1)*(條件2)*(條件3)* …(條件n))
作用:
統計同時滿足條件1、條件2到條件n的記錄的個數。
例項:
=SUMPRODUCT((A2:A10="男")*(B2:B10="中級職稱"))
公式解釋:
統計性別為男性且職稱為中級職稱的職工的人數
2、 使用SUMPRODUCT進行多條件求和
語法:
=SUMPRODUCT((條件1)*(條件2)* (條件3) *…(條件n)*某區域)
作用:
彙總同時滿足條件1、條件2到條件n的記錄指定區域的彙總金額。
例項:
=SUMPRODUCT((A2:A10="男")*(B2:B10="中級職稱")*C2:C10)
公式解釋:
統計性別為男性且職稱為中級職稱的職工的工資總和(假設C列為工資)
三、 注意事項
1、陣列引數必須具有相同的維數,否則,函式 SUMPRODUCT 將返回錯誤值 #VALUE!。
2、SUMPRODUCT函式將非數值型的陣列元素作為 0 處理。
3、在SUMPRODUCT中,2003及以下版本不支援整列(行)引用,必須指明範圍,不可在SUMPRODUCT函式使用A:A、B:B,Excel2007及以上版本可以整列(列)引用,但並不建議如此使用,公式計算速度慢。
4、SUMPRODUCT函式不支援“*”和“?”萬用字元
SUMPRODUCT函式不能象SUMIF、COUNTIF等函式一樣使用“*”和“?”等萬用字元,要實現此功能可以用變通的方法,如使用LEFT、RIGHT、ISNUMBER(FIND())或ISNUMBER(SEARCH())等函式來實現萬用字元的功能。如:
=SUMPRODUCT((A2:A10="男")*(B2:B10="中級職稱")*(LEFT(D2:D10,1)="龍")*C2:C10)
=SUMPRODUCT((A2:A10="男")*(B2:B10="中級職稱")*((ISNUMBER(FIND("龍逸凡",D2:D10)))*C2:C10))
注:以上公式假設D列為職工姓名。ISNUMBER(FIND())、ISNUMBER(SEARCH())作用是實現“*”的通配功能,只是前者區分大小寫,後者不區分大小寫。
5、SUMPRODUCT函式多條件求和時使用“,”和“*”的區別:當擬求和的區域中無文字時兩者無區別,當有文字時,使用“*”時會出錯,返回錯誤值 #VALUE!,而使用“,”時SUMPRODUCT函式會將非數值型的陣列元素作為 0 處理,故不會報錯。 也就是說:
公式1:=SUMPRODUCT((A2:A10="男")*(B2:B10="中級職稱")*C2:C10)
公式2:=SUMPRODUCT((A2:A10="男")*(B2:B10="中級職稱"),C2:C10)
當C2:C10中全為數值時,兩者計算結果一樣,當C2:C10中有文字時公式1會返回錯誤值 #VALUE!,而公式2會返回忽略文字以後的結果。
四、 網友們的精彩例項
1、求指定區域的奇數列的數值之和
=SUMPRODUCT(MOD(COLUMN(A1:F1),2)*A1:F1)
2、求指定區域的偶數行的數值之和
=SUMPRODUCT(((MOD(ROW(A1:A22),2))-1)*A1:A22)*(-1)
3、求指定行中列號能被4整除的列的數值之和
=SUMPRODUCT((MOD(COLUMN(A1:P1),4)=0)*A1:P1)
4、.求某數值列前三名分數之和
=SUMPRODUCT(LARGE(B1:B16,ROW(1:3)))
5、統計指定區域不重複記錄的個數
=SUMPRODUCT(1/COUNTIF(V11:V15,V11:V15))