1. 程式人生 > >Excel多條件求和 & SUMPRODUCT函式用法詳解

Excel多條件求和 & SUMPRODUCT函式用法詳解

日常工作中,我們經常要用到多條件求和,方法有多種,第一類:使用基本功能來實現。主要有:篩選、分類彙總、資料透視表、多條件求和嚮導;第二類:使用公式來實現方法。主要有:使用SUM函式編寫的陣列公式、聯用SUMIF和輔助列(將多條件變為單條件)、使用SUMPRODUCT函式、使用SUMIFS函式(限於Excel2007及以上的版本),方法千差萬別、效果各有千秋。本人更喜歡用SUMPRODUCT函式。由於Excel幫助對SUMPRODUCT函式的解釋太簡短了,與SUMPRODUCT函式的作用相比實在不匹配,為了更好地把握該函式,特將其整理如下。
  一、 基本用法
  在給定的幾組陣列中,將陣列間對應的元素相乘,並返回乘積之和。
  語法:
  SUMPRODUCT(array1,array2,array3, ...)
  Array1, array2, array3, ... 為 2 到 30 個數組,其相應元素需要進行相乘並求和。
  公式:=SUMPRODUCT(A2:B4, C2:D4) 公式解釋:兩個陣列的所有元素對應相乘,然後把乘積相加,即 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))