SUMPRODUCT函式的四種用法
SUMPRODUCT函式
在給定的幾組陣列中,將陣列間對應的元素相乘,並返回乘積之和。語法
SUMPRODUCT(array1,array2,array3, ...) Array1,array2,array3, ... 為 2 到 30 個數組,其相應元素需要進行相乘並求和。說明
· 陣列引數必須具有相同的維數,否則,函式 SUMPRODUCT 將返回錯誤值 #VALUE!。 · 函式 SUMPRODUCT 將非數值型的陣列元素作為 0 處理。示例
| 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) |
A列 B列 C列 D列 E列
資料1資料2資料3資料4資料5
2 3 4 12 10
5 5 6 5 20
9 7 8 #N/A 30
7 2 7 9 KL
1 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)則返回正確的計算值94。如果用公式 =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 | 女 | 中一 |
計算結果
⑵公式在資料統計區域中的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=$E2具體操作:選中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 |
相關推薦
SUMPRODUCT函式的四種用法
SUMPRODUCT函式 在給定的幾組陣列中,將陣列間對應的元素相乘,並返回乘積之和。 語法 SUMPRODUCT(array1,array2,array3, ...) Array1,array2,array3, ... 為 2 到 30 個數組,其相
Timer的定時排程函式schedule的四種用法(Java)
schedule的四種用法schedule(task,time)task-所安排的任務 time-執行任務的時間作用:在時間等於或者超過time的時候執行且僅執行一次import java.text.SimpleDateFormat; import java.util.Ca
mysql中模糊查詢的四種用法介紹
包含 如果 正則 搜索 name 模糊查詢 長度 use mysql 下面介紹mysql中模糊查詢的四種用法: 1,%:表示任意0個或多個字符。可匹配任意類型和長度的字符,有些情況下若是中文,請使用兩個百分號(%%)表示。 比如 SELECT * FROM [user] W
JS中this的四種用法
syn pac copy title pan 復制 comment test code 1.在一般函數方法中使用 this 指代全局對象 1 2 3 4 5 function test(){ this.x = 1; alert(this.
C# this關鍵字的四種用法
end 復制代碼 replace 原始類型 catch 擴展 取數據 convert exec 用法一 this代表當前類的實例對象 namespace Demo { public class Test { private string
c++中for的四種用法。
四種 mes pre using In col space c++ names #include <algorithm> #include <vector> #include <iostream> using namespace
QMessageBox 的四種用法
void MainWindow::on_info_clicked() { //info QMessageBox::information(this, "Title", "Text"); } void MainWindow::on_question_clicked() { //ques
Dialog的四種用法
對話方塊Dialog在android基本用法很多種簡單介紹一下以下四種用法 Button btn1; Button btn2; Button btn3; Button btn4; final int DIALOG_ONE
JAVA中this的四種用法的詳解
2018年10月31日 15:27:47 Nirvana again 閱讀數:2 個人分類: JAVA
[java]static關鍵字的四種用法
在java的關鍵字中,static和final是兩個我們必須掌握的關鍵字。不同於其他關鍵字,他們都有多種用法,而且在一定環境下使用,可以提高程式的執行效能,優化程式的結構。下面我們先來了解一下static關鍵字及其用法。 static關鍵字 1.修飾成員變數 在我們平時的使用當中,static最常用的功能就是
java web javaEE ,jsp EL表示式和JSTL標籤if-else if-else四種用法
一.條件運算子${user.gender==1?'男':'女'}二.if()<c:if test="${2>1}">code..</c:if>code會在test屬性為true時執行三.if()-else{}<c:choose> &
static關鍵字的四種用法
在java的關鍵字中,static和final是兩個我們必須掌握的關鍵字。不同於其他關鍵字,他們都有多種用法,而且在一定環境下使用,可以提高程式的執行效能,優化程式的結構。下面我們先來了解一下static關鍵字及其用法。static關鍵字1.修飾成員變數在我們平時的使用當中,
淺談c#委託的四種用法及lambda匿名委託
c#委託是一個類,可以定義一種方法型別,將有這種型別的函式當做引數進行傳遞,即他是一個可以把方法作為引數的類。 這裡通過一個小功能分別說明一下c#委託(delegate、Action、Func、predicate)的用法。 如下圖所示: Form1窗體
JS(ES6)中this的四種用法
轉載文章:https://www.cnblogs.com/pabitel/p/5922511.html JS(ES6)中this的五種用法 1.在回撥函式中使用this 不知道呼叫者是誰? //setInterval定時器函式中的回撥函式,不知道最後是那個在呼叫,如果回撥函式不用箭頭函,
正則表示式-問號的四種用法
原文符號 因為?在正則表示式中有特殊的含義,所以如果想匹配?本身,則需要轉義,\? 有無量詞 問號可以表示重複前面內容的0次或一次,也就是要麼不出現,要麼出現一次。 非貪婪匹配 貪婪匹配 在滿足匹配時,匹配儘可能長的字串,預設情況下,採用貪婪匹配 string patt
C語言const關鍵字的四種用法
#include <stdio.h> /* gcc中,const是通過編譯器在編譯的時候執行檢查來確保實現的(也就是 說const型別的變數不能改是編譯錯誤,不是執行時錯誤。)所以
內部類的四種用法
內部類Inner Class 將相關的類組織在一起,從而降低了名稱空間的混亂。 一個內部類可以定義在另一個類裡,可以定義在函式裡,甚至可以作為一個表示式的一部分。 Java中的內部類共分為四種: 靜態內部類static inner class (
[java]static關鍵字的四種用法和void的用法
void關鍵字表示函式沒有返回結果,是java中的一個關鍵字。Void作為函式的返回結果表示函式返回null(除了null不能返回其它型別)。在java的關鍵字中,static和final是兩個我們必須掌握的關鍵字。不同於其他關鍵字,他們都有多種用法,而且在一定環境下使用,可
淺談static關鍵字的四種用法
1、修飾成員變數: 在一個person類中,一個成員變數例如 String name,當new2個person()物件時候,這2個物件在堆的位置是不同的,給name賦值張三、李四,這兩個物件的 name是互相不影響的。 當用static修飾時,例如static String name,這個變數是存在靜
synchronized的四種用法
一 修飾方法 Synchronized修飾一個方法很簡單,就是在方法的前面加synchronized,synchronized修飾方法和修飾一個程式碼塊類似,只是作用範圍不一樣,修飾程式碼塊是大括號括起來的範圍,而修飾方法範圍是整個函式。 例如: 方法一 public