SUMPRODUCT函式

SUMPRODUCT函式

函式名詞解釋:返回相應的數組或區域乘積的和。

說明:· 數組參數必須具有相同的維數,否則,函式 SUMPRODUCT 將返回錯誤值 #VALUE!。· 函式 SUMPRODUCT 將非數值型的數組元素作為 0 處理。

英語的意思SUM:【數】求和。PRODUCT:【數】(乘)積 20 is the product of 5 and 4.二十是五與四的乘積。SUMPRODUCT:組合的漢語意思是:乘積之和,在給定的幾組數組中,將數組間對應的元素相乘,並返回乘積之和。

基本介紹

  • 中文名:SUMPRODUCT函式
  • 語法:SUMPRODUCT(array1 ...)
  • 含義:乘積之和
  • 屬性:函式
語法,示例,

語法

SUMPRODUCT(array1,array2,array3, ...)
Array1,array2,array3, ... 為 2 到 30 個數組,其相應元素需要進行相乘並求和。

示例

如果將示例複製到空白工作表中,可能會更易於理解該示例。
B
C
D
E
1
Array1
Array1
Array2
Array2
2
3
4
2
7
3
8
6
6
7
4
1
9
5
3
公式
說明(結果)
=SUMPRODUCT(B2:C4,D2:E4)
兩個數組的所有元素對應相乘,然後把乘積相加,即3*2+4*7+8*6+6*7+1*5+9*3。(156)
數學函式SUMPRODUCT套用實例
一、基本功能
1.函式SUMPRODUCT的功能返回相應的區域或數組乘積的和。
2.基本格式SUMPRODUCT(數據1,數據2,……,數據30)
3.示例數據表A列 B列 C列 D列 E列數據1數據2數據3數據4數據52 3 4 12 105 5 6 5 209 7 8 #N/A 307 2 7 9 KL1 6 2 8 2
⑴基本計算
①區域計算要求:計算A、B、C三列對應數據乘積的和。公式:=SUMPRODUCT(A2:A6,B2:B6,C2:C6)計算方式:=A2*B2*C2+A3*B3*C3+A4*B4*C4+A5*B5*C5+A6*B6*C6即三個區域A2:A6,B2:B6,C2:C6同行數據積的和。返回值788。
②數組計算要求:把上面數據表中的三個區域A2:A6,B2:B6,C2:C6數據按一個區域一個數組,計算對應數組積的和。把A2:A6,B2:B6,C2:C6分別作為一個數組,即A2:A6表示為數組-{2;5;9;7;1}B2:B6表示為數組-{3;5;7;2;6}C2:C6表示為數組-{4;6;8;7;2}公式:
=SUMPRODUCT({2;5;9;7;1},{3;5;7;2;6},{4;6;8;7;2})
=788
注意:數組數據用大括弧{}括起來。行數據之間用分號";"分隔,如果是同一行的數據,用逗號","分隔。
⑵可能出現的錯誤
編輯公式時,引用的數據區域大小不一致導致計算錯誤,返回值為#VALUE!。示例:在上面的數據表中,計算A列與B列數據區域積的和。公式:
=SUMPRODUCT(A2:A6,B2:B5)
=SUMPRODUCT(A2:A6,B2:B8)
都會返回錯誤值#VALUE!。所以在用SUMPRODUCT函式時,引用的數據區域大小要一致。
②數據區域中有錯誤值時,計算出現錯誤值。示例:在上面的數據表中,計算數據區域A2:A6與D2:D6對應積的和。公式:
=SUMPRODUCT(A2:A6,D2:D6)
因為D2:D6中有錯誤值#N/A,所以公式返回值為錯誤值#N/A。
③數據區域引用不能整列引用。示例:計算上面數據表中A2:A6和B2:B6區域對應數據積的和,正確公式為=SUMPRODUCT(A2:A6,B2:B6)則返回正確的計算值114。如果用公式
=SUMPRODUCT(A:A,B:B)
則返回錯誤值#NUM!。
④數據區域有文本,計算中系統默認文本值為0。示例:在上面數據表中,計算A2:A6和E2:E6區域中對應數據積的和。公式
=SUMPRODUCT(A2:A6,E2:E6)
返回值是392,其中E5是文本KL,則A5*E5=0。
二、用於多條件計數用數學函式SUMPRODUCT計算符合2個及以上條件的數據個數
⑴數據表如下數據表所示:
A
B
C
1
姓名
性別
職稱
2
A
中一
3
B
中二
4
C
中一
5
D
中一
6
E
中一
7
F
中二
8
G
中二
9
H
中一
10
I
中一
11
J
中一
統計表E列 F列 G列中一 中二男女要求:統計上面數據表中男、女性中分別是中一、中二的人數。如下圖片,A1:C11數據區域,在E1:G3區域統計男、女中中一和中二的人數是多少。⑵公式在數據統計區域中的F2單元格編輯如下公式:
計算結果計算結果
=SUMPRODUCT(($B$2:$B$11=$E2)*($C$2:$C$11=F$1))
向下複製到F3,向右複製到G3。
⑶公式分解及分析
①條件1——$B$2:$B$11=$E2在計算過程中,條件1是一個數組,返回多值,寫成公式如下:=$B$2:$B$11=$E$2具體操作:選中10個連續的單元格,輸入上述公式後,按Ctrl+Shift+回車鍵確認,返回10個邏輯判斷值——TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE。這10個邏輯判斷值構成一個新的由TRUE主FALSE組成的數組1。
②條件2——$C$2:$C$11=F$1與條件1相同,是一個數組,返回多值,寫成公式如下:=$C$2:$C$11=F$1具體操作:同樣的方法,選中對應的10連續單元格,輸入上述公式,按Ctrl+Shift+回車鍵確認,返回10個邏輯判斷值——TRUE;FALSE;TRUE;TRUE;TRUE;FALSE; FALSE;TRUE; TRUE;TRUE。這10個邏輯判斷值構成另一個新的由TRUE主FALSE組成的數組2。
③($B$2:$B$11=$E2)*($C$2:$C$11=F$1)由新構成的數組1乘以數組2,即:
=($B$2:$B$11=$E2)*($C$2:$C$11=F$1)
={數組1*數組2}
={ TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE }*{ TRUE;FALSE;TRUE;TRUE;TRUE;FALSE; FALSE;TRUE; TRUE;TRUE }
={TRUE*TRUE;FALSE*FALSE;FALSE*TRUE;TRUE*TRUE;FALSE*TRUE;TRUE*FALSE; FALSE*FALSE;TRUE*TRUE;TRUE*TRUE; FALSE*TRUE}
={1;0;0;1;0;0;0;1;1;0}
其中,邏輯值TRUE與FALSE參與計算時:
TRUE=1,FALSE=0,TRUE*TRUE=1,TRUE*FALSE=FALSE*TRUE=0,FALSE*FALSE=0
因此{數組1*數組2}={1;0;0;1;0;0;0;1;1;0}由1和0構成了一個新的數組3。
④=SUMPRODUCT(($B$2:$B$11=$E2)*($C$2:$C$11=F$1))
函式SUMPRODUCT對新的數組3中的所有數據求和。即:
=SUMPRODUCT(($B$2:$B$11=$E2)*($C$2:$C$11=F$1))=SUMPRODUCT({數組1*數組2})
=SUMPRODUCT({數組3})
=SUMPRODUCT({1;0;0;1;0;0;0;1;1;0})
=4
這裡需要說明的是,公式編輯按照函式SUMPRODUCT的一般格式,可以編輯如下等效的公式:
=SUMPRODUCT(($B$2:$B$11=$E2)*1,($C$2:$C$11=F$1)*1)
函式SUMPRODUCT的作用是對數組($B$2:$B$11=$E2)與數組($C$2:$C$11=F$1))計算其乘積的和,即:
=SUMPRODUCT(($B$2:$B$11=$E2)*1,($C$2:$C$11=F$1)*1)
=SUMPRODUCT({ TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE }*1,{ TRUE;FALSE;TRUE;TRUE;TRUE;FALSE; FALSE;TRUE; TRUE;TRUE }*1)
=SUMPRODUCT({1;0;0;1;0;1;0;1;1;0},{1;0;1;1;1;0;0;1;1;1})
=SUMPRODUCT({1*1;0*0;0*1;1*1;0*1;1*0;0*0;1*1;1*1,0*1})
=SUMPRODUCT({1;0;0;1;0;0;0;1;1,0})
=4
注意:TRUE*1=1,FALSE*1=1*FALSE=0,TRUE*0=0*TRUE=0 。數組中用分號分隔,表示數組是一列數組,分號相當於換行。兩個數組相乘是同一行的對應兩個數相乘。
三、用於多條件求和。對於計算符合某一個條件的數據求和,可以用SUMIF函式來解決。如果要計算符合2個以上條件的數據求和,用SUMIF函式就不能夠完成了。這就可以用函式SUMPRODUCT。
用函式SUMPRODUCT計算符合多條件的數據和,基本格式是:SUMPRODUCT(條件1*條件2*……,求和數據區域)
數據表
A
B
C
D
1
姓名
性別
職稱
課時
2
A
中一
15
3
B
中二
16
4
C
中一
14
5
D
中一
13
6
E
中一
18
7
F
中二
15
8
G
中二
16
9
H
中一
14
10
I
中一
17
11
J
中一
18
要求:計算男、女分別是中一或中二的總課時數。
統計表F列 G列 H列 中一 中二男女在G2中編輯公式
=SUMPRODUCT(($B$2:$B$11=$F2)*($C$2:$C$11=G$1),$D$2:$D$11))
回車確認後向下向右複製公式到H3單元格。
公式釋義:性別區域$B$2:$B$11中滿足條件男和職稱區域$C$2:$C$11中滿足條件中一的數據,通過判斷計算後由1和0組成一個新的數據區域,這個新的數據區域再和課時區域$D$2:$D$11中的對應數據相乘後求和。
公式對比:到此,對函式SUMPRODUCT用來計數和求和,試作一對比
計數公式
=SUMPRODUCT(($B$2:$B$11=$E2)*($C$2:$C$11=F$1))
求和公式
=SUMPRODUCT(($B$2:$B$11=$F2)*($C$2:$C$11=G$1),$D$2:$D$11)
不難看出,求和公式在原來的計數公式中,在相同判斷條件下,增加了一個求和的數據區域。也就是說,用函式SUMPRODUCT求和,函式需要的參數一個是進行判斷的條件,另一個是用來求和的數據區域。
四、用於排名次如下A列數據:A列 B列數據 名次56658965567890526090需要排出區域A2:A11中10個數據的名次。在B2中編輯公式:
=SUMPRODUCT((A2<$A$2:$A$11)*1)+1
向下複製到單元格B11。
公式釋義:用A2到$A$2:$A$11(用絕對引用$保證公式在向下複製時整個數據區域不發生變化)中進行比較,當A2<$A$2:$A$11成立時,則返回TRUE;如果A2<$A$2:$A$11不成立就返回FALSE。所以數組公式=A2<$A$2:$A$11返回一個由TRUE和FALSE構成的邏輯數組。把數組公式=A2<$A$2:$A$11構成的邏輯數組乘1,得到一個由0和1構成的新數組。SUMPRODUCT再對由0和1構成的新數組求和,表示在數據區域$A$2:$A$11中比A2大的數據個數。所以A2在數據區域$A$2:$A$11內排列的位次應該是比A2大的數據個數+1,即公式=數據區域$A$2:$A$11內比A2大的個數+1
=SUMPRODUCT((A2<$A$2:$A$11)*1)+1
公式向下複製,則依次對$A$2:$A$11中每一個數據重複進行上述判斷求和,從而排出數據區域$A$2:$A$11中每一個數據的位次。很顯然,對於數據區域$A$2:$A$11中相同的數,判斷和計算結果是相同的,也就是排出來的位次相同。所以用SUMPRODUCT函式排出來的名次,與直接用RANK函式排出來的名次是一樣的,有重複名次,但最大位次數不超過數據區域$A$2:$A$11中的總數據個數。
如果希望排出的位次沒有重複,而數據區域$A$2:$A$11中相同數據的位次按數據出現的先後順序排位,可以用下面的公式:
=SUMPRODUCT((A2<$A$2:$A$11)*1)+COUNTIF($A$2:A2,A2)
公式向下複製即可。兩種排名對比如下表所示:A列 B列 C列數據 名次重複順序名次56 8 865 5 589 3 365 5 656 8 978 4 490 1 152 10 1060 7 790 1 2
綜上所述,對於多條件的計數或者求和,可以用數學函式SUMPRODUCT來比較方便的解決。在使用函式時,進行數據引用的單元格區域或數組應該大小一致,不能採取整列引用(形如A:A)。如果跨表使用函式SUMPRODUCT,與其它函式跨表引用數據一樣,數據區域前面應該標明工作表名稱。[color=#EE1D24,strength=3);]計數公式中最關鍵的是確定計數的判斷條件。求和公式在原來的計數公式中,在相同判斷條件下增加了一個求和的數據區域。用函式SUMPRODUCT求和,函式需要的參數一個是進行判斷的條件,另一個是用來求和的數據區域。
對於sumproduct使用過程中*1的解釋說明
sumproduct函式,逗號分割的各個參數必須為數字型數據,如果是判斷的結果邏輯值,就要乘1轉換為數字。
如果不用逗號,直接用*號連線,就相當於乘法運算,就不必添加*1。

相關詞條

熱門詞條

聯絡我們