哈羅,大家好,我是星光,今天給大家分享一個很常用也很實用的函式:SUMPRODUCT。
眾所周知,條件求和與計數是表格使用者最經常碰到的兩個問題,而該函式不但集合了條件求和與計數兩大功能於一身;還可用於複雜場景下的排名處理,甚至聽說有人靠它一個函式就打下了Excel半壁江山……於是便不可不學了。
基礎語法
先來看基礎語法,SUMPRODUCT的官方語法說明是在給定的幾組陣列(array)中,將陣列間對應的元素相乘,並返回乘積之和。語法格式如下:
=SUMPRODUCT(array1,array2,array3, ...)
——SUM是求和的意思,PRODUCT是相乘的意思,引數之間相乘之後再求和,你看,SUMPRODUCT確實人如其名了。總結起來,SUMPRODUCT函式具有以下三個特點:
1> 它本身預設執行陣列運算。
2> 它會將引數中非數值型的陣列元素作為0處理。3> 引數必須有相同的尺寸,否則返回錯誤值。
特點解析
看完了SUMPRODUCT的簡歷,想必很多朋友是霧裡看花,僅僅對它有個模糊的認知,它的這些特點是啥意思?它到底能夠勝任什麼樣子的工作?其實並不瞭然。打個響指,我舉幾個例子。
如上圖所示的資料表,C列是商品單價,D列是銷售數量,現在需要在C9單元格計算銷售總額。C9輸入以下公式,即可得出結果11620.60
=SUMPRODUCT(C3:C7, D3:D7)
這便是一個簡單的SUMPRODUCT函數了。
它的運算過程是:C3:C7和D3:D7兩個區域陣列內的元素分別相乘,也就是C3*D3,C4*D4,C5*D5……直至C7*D7
等於先將每個商品的銷售金額計算出來,最後彙總求和。由於SUMPRODUCT函式第一個特點,本身是支援陣列間運算的,所以雖然該公式執行了多項運算,但並不需要按陣列三鍵<Ctrl+Shift+Enter>結束公式輸入。有的朋友說啦,公式也可以寫成這樣:
=SUMPRODUCT(C3:C7*D3:D7)
或者使用以下陣列公式,也是可以的。
=SUM(C3:C7*D3:D7)
那麼這三個公式之間有什麼區別呢?首先,大部分情況下,SUMPRODUCT函式都不需要陣列三鍵結束公式輸入即可執行陣列運算,而SUM函式是需要的。其次,就要說到SUMPRODUCT函式另一個非常重要的特點了。……我們將上面的表稍做改動,將“鋼筆”的銷售數量更改為:暫未統計。同樣需要在C9單元格計算銷售總額。
這時候,如果使用公式:
=SUMPRODUCT(C3:C7*D3:D7)
或者陣列公式:
=SUM(C3:C7*D3:D7)
都將返回錯誤值#VALUE!返回錯誤值的原因在於D4單元格“暫未統計”為文字值,文字值是無法直接參與數學運算的,於是C4*D4返回錯誤值#VALUE!,進而造成整個公式的結果返回錯誤值。而使用以下公式就沒有這方面的困擾,會直接返回正確結果:
=SUMPRODUCT(C3:C7,D3:D7)
這便是SUMPRODUCT函式的第二個特點:將非數值型的陣列元素作為0處理。以該示例來說,D4單元格的值“暫未統計”為文字,並非數值,SUMPRODUCT將其主動視為零,於是C4*D4,結果亦為零,其餘陣列元素照常計算,得出11385.60的結果。需要特別說明的是,SUMPRODUCT將非數值型的陣列元素作為0處理,所謂的非數值型陣列元素,包含邏輯值、文字,但並不包含錯誤值,如果陣列元素中包含錯誤值,該公式亦返回錯誤值,比如該示例的第一條公式。……說完了SUMPRODUCT函式的兩個特點,我們就再來聊聊它的第三個特點:陣列引數必須有相同的尺寸,否則返回錯誤值。我們依然用上述圖片的例題為例,繼續計算商品的銷售總額。如果我們在C9輸入公式:
=SUMPRODUCT(C3:C7,D3:D6)
結果會是怎麼樣的呢?錯誤值:#VALUE!為什麼?細心的你肯定已經注意到了,兩個區域陣列,C3:C7明顯顯比D3:D6多了一個元素,C3和D3結對子,C4和D4結對子……那麼C7和誰結對子呢?女人們都嫁了,結果剩下一個光棍,這日子沒法過了!一個蘿蔔一個坑,只有蘿蔔沒有坑,這不是要蘿蔔死嗎?——於是SUMPRODUCT就不高興了,它給你一個錯誤值#VALUE!,明確告訴你,和諧時代幸福歲月,日子不能這麼過。這就是SUMPRODUCT函式的第三個特點:陣列引數必須有相同的尺寸,否則返回錯誤值。下面是一道練習題,你看看,能用SUMPRODUCT函式做出來嗎?
圖文製作:看見星光