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)

        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))

相關推薦

Excel條件求和 & SUMPRODUCT函式用法

日常工作中,我們經常要用到多條件求和,方法有多種,第一類:使用基本功能來實現。主要有:篩選、分類彙總、資料透視表、多條件求和嚮導;第二類:使用公式來實現方法。主要有:使用SUM函式編寫的陣列公式、聯用SUMIF和輔助列(將多條件變為單條件)、使用SUMPRODUCT函式、使

Excel條件求和 & SUMPRODUCT函式用法

日常工作中,我們經常要用到多條件求和,方法有多種,第一類:使用基本功能來實現。主要有:篩選、分類彙總、資料透視表、多條件求和嚮導;第二類:使用公式來實現方法。主要有:使用SUM函式編寫的陣列公式、聯用SUMIF和輔助列(將多條件變為單條件)、使用SUMPRODUCT函式、

ROW_NUMBER() OVER()函式用法 (分組排序 例子

語法格式:row_number() over(partition by 分組列 order by 排序列 desc) row_number() over()分組排序功能: 在使用 row_number() over()函式時候,over()裡頭的分組以及排序的執行晚於 wher

linux之select函式用法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

regionprops函式用法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

moveWindow函式用法

moveWindow()函式用於改變視窗的位置和尺寸 格式如下: BOOL moveWindow( const string& winname,int x, int y, int Width, int Height,BOOL bRepaint = TRUE); 引數說明:

MySQL自定義函式用法-複合結構自定義變數/流程控制

自定義函式 (user-defined function UDF)就是用一個象ABS() 或 CONCAT()這樣的固有(內建)函式一樣作用的新函式去擴充套件MySQL。 所以UDF是對MySQL功能的一個擴充套件 建立和刪除自定義函式語法: 建立UDF:   CREATE 

Python3中正則模組re.compile、re.match及re.search函式用法

本文例項講述了Python3中正則模組re.compile、re.match及re.search函式用法。分享給大家供大家參考,具體如下: re模組 re.compile、re.match、 re.search re 模組官方說明文件 正則匹配的時候,第一個字元是 r,表示 raw string 原生字

sprintf函式用法

sprintf() 格式化輸出函式(圖形) 功能: 函式sprintf()用來作格式化的輸出。 用法: 此函式呼叫方式為intsprintf(char *string,char *format,arg_list); 說 明: 函式sprintf()的用法和printf()函式一樣,只是sprintf

C#基礎系列:執行緒的常見用法

前言:此篇就主要從博主使用過的幾種多執行緒的用法從應用層面大概介紹下。文中觀點都是博主個人的理解,如果有不對的地方望大家指正~~ 1、多執行緒:使用多個處理控制代碼同時對多個任務進行控制處理的一種技術。據博主的理解,多執行緒就是該應用的主執行緒任命其他多個執行緒去協

C++ replace() 函式用法

文主要針對c++中常用replace函式用法給出樣例程式 /*用法一:  *用str替換指定字串從起始位置pos開始長度為len的字元  *string& replace (size_t pos, size_t len, const string& st

JavaScript中bind、call、apply函式用法

在給我們專案組的其他程式介紹 js 的時候,我準備了很多的內容,但看起來效果不大,果然光講還是不行的,必須動手。前幾天有人問我關於程式碼裡 call() 函式的用法,我讓他去看書,這裡推薦用js 寫伺服器的程式猿看《javascript程式設計精粹》 這本書,crockfo

C#基礎系列——執行緒的常見用法

前言:前面幾節分別介紹了下C#基礎技術中的反射、特性、泛型、序列化、擴充套件方法、Linq to Xml等,這篇跟著來介紹下C#的另一基礎技術的使用。最近專案有點緊張,所以準備也不是特別充分。此篇就主要從博主使用過的幾種多執行緒的用法從應用層面大概介紹下。文中觀點都是博主個人的理解,如果有不對的地方望大家指正

UNIX /Linux中的memcpy函式用法

原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include <string.h>

C語言中fopen函式用法

fopen函式用來開啟一個檔案,其呼叫的一般形式為:檔案指標名=fopen(檔名,使用檔案方式); 其中,“檔案指標名”必須是被說明為FILE 型別的指標變數;“檔名”被開啟檔案的檔名,是字串常量或字串陣列,要求是全路徑;“使用檔案方式”是指檔案的型別和操作要求。 檔案使用方

IOCTL函式用法

ioctl是裝置驅動程式中對裝置的I/O通道進行管理的函式。所謂對I/O通道進行管理,就是對裝置的一些特性進行控制,例如串列埠的傳輸波特率、馬達的轉速等等。它的呼叫個數如下: int ioctl(int fd, ind cmd, …);     其中fd是使用者程式開啟裝置

#Python第三方模組學習(二)——numpy中loadtxt函式用法

本篇系轉載文章,並在原文的基礎上補充引數delimeter的說明 umpy中有兩個函式可以用來讀取檔案,主要是txt檔案, 下面主要來介紹這兩個函式的用法 第一個是loadtxt, 其一般用法為 numpy.loadtxt(fname, dtype=, commen

MySQL自定義函式用法

自定義函式 (user-defined function UDF)就是用一個象ABS() 或 CONCAT()這樣的固有(內建)函式一樣作用的新函式去擴充套件MySQL。 所以UDF是對MySQL功能的一個擴充套件 建立和刪除自定義函式語法: 建立UDF:   CREATE [AGGREGATE] FUN

Excel函式sumproduct應用案例-條件求和

作者:iamlaosong 越來越覺得sumproduct這個函式有用,過去用sum組函式,改起來複制起來都麻煩,sumif在條件多的時候也覺得不方便。現在改用sumproduct函式,就簡單多了。查

sumproduct條件求和經典問題(乘號和逗號)剖析

iamlaosong文 SUMPRODUCT函式的含義為在給定的幾組陣列中,將陣列間對應的元素相乘,並返回乘積之和。按我的理解就是兩個以上的陣列乘積之和。例如,公式為:=SUMPRODUCT(A2:A4, B2:B4)就相當於=A2*B2+A3*B3+A4*B4,兩個區域用