SUMPRODUCT預設語法
=SUMPRODUCT (array1, [array2], [array3], …)
若只有兩陣列
會計算Array1的元素1*Array2的元素1 +
Array1的元素2*Array2的元素2 +
Array1的元素3*Array2的元素3
……
各陣列引數必須有相同的維度
不過也可以用來取代
COUNTIF, SUMIF函數
這時候的語法變成
SUMPRODUCT(條件1*條件2*條件3*……)
條件的格式如:
Range 運算子 Criteria
B2:B7=”儲蓄保險王”
本月業績如下圖,
請問”儲蓄保險王”
貢獻了幾次業績?
總共多少業績?

貢獻了幾次業績?
使用COUNTIF()
=COUNTIF(B2:B7,”儲蓄保險王”)
答案為3
改用SUMPRODUCT()
=SUMPRODUCT((B2:B7=”儲蓄保險王”)*1)
答案一樣為3
貢獻多少業績?
使用SUMIF函數
=SUMIF(B2:B7,”儲蓄保險王”,C2:C7)
答案為30000
改用SUMPRODUCT函數
=SUMPRODUCT((B2:B7=”儲蓄保險王”)*(C2:C7))
答案一樣是30000
既然SUMPRODUCT的工作
可以用COUNTIF, SUMIF取代
那還有什麼特別呢?
再繼續看下一個例子
一間迷你小學
有三個班級,
每班有三個學生
學生分數如下

校排名可以簡單用
RANK或RANK.EQ解答
=RANK.EQ(D2,$D$2:$D$10)
班排名呢?
=SUMPRODUCT(($C$2:$C$10=C2)*($D$2:$D$10>D2))+1
以下錯誤示範
=SUMPRODUCT(($C$2:$C$10=C2)*($D$2:$D$10>=D2))
本範例可以算出一樣的結果
但若出現同分狀況
例如:B,C學生同分70
正確公式會出現兩個第二名
但錯誤示範則出現兩個第三名
第二名從缺
這時候要用COUNTIFS替代的話

=COUNTIFS($C$2:$C$10,C2,$D$2:$D$10,“>75”)+1
“>75” , “>70” , “>65”
要用以下較不直覺的方式指定儲存格
才能拖曳
=COUNTIFS($E$2:$E$10,E2,$F$2:$F$10,“>”&F2)+1
“>F2″的話,無法拖曳

SUMPRODUCT(條件1*條件2*條件3*……)
沒有條件數目的限制
可以取代COUNTIFS, SUMIFS
![Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T](https://i0.wp.com/savingking.com.tw/wp-content/uploads/2025/04/20250422150133_0_1cfa94.png?quality=90&zoom=2&ssl=1&resize=350%2C233)
![Python 讀取 DOCX 圖片關聯:qn+find/findall 與 XPath 的實戰對照 from lxml import etree ; from docx.oxml.ns import qn; lxml.etree._Element.findall( f”.//{ qn(‘a:blip’) }” ) ; .get( qn(“r:embed”) ) #獲取 屬性名 ‘r:embed’ 的 屬性值(如: ‘rId4’) ; lxml.etree._Element.xpath( “//a:blip/@r:embed”, namespaces = NS) #/@r:embed = 獲取 屬性名 ‘r:embed’ 的 屬性值(如: ‘rId4’),使用.findall() 要先.findall()獲取List[_Element],再迴圈_Element.get()獲取屬性值, .xpath() 第一個參數path 使用”//a:blip/@r:embed” ,可直接獲取屬性值(List[str]如: [‘rId4’, ‘rId5’]) ; 如何對docx真實移除圖片瘦身? Python 讀取 DOCX 圖片關聯:qn+find/findall 與 XPath 的實戰對照 from lxml import etree ; from docx.oxml.ns import qn; lxml.etree._Element.findall( f”.//{ qn(‘a:blip’) }” ) ; .get( qn(“r:embed”) ) #獲取 屬性名 ‘r:embed’ 的 屬性值(如: ‘rId4’) ; lxml.etree._Element.xpath( “//a:blip/@r:embed”, namespaces = NS) #/@r:embed = 獲取 屬性名 ‘r:embed’ 的 屬性值(如: ‘rId4’),使用.findall() 要先.findall()獲取List[_Element],再迴圈_Element.get()獲取屬性值, .xpath() 第一個參數path 使用”//a:blip/@r:embed” ,可直接獲取屬性值(List[str]如: [‘rId4’, ‘rId5’]) ; 如何對docx真實移除圖片瘦身?](https://i2.wp.com/savingking.com.tw/wp-content/uploads/2025/11/20251119130848_0_3fbf6b.png?quality=90&zoom=2&ssl=1&resize=350%2C233)



![Python如何讀寫csv逗點分隔檔(每列內容為新光增有利現金流)?pandas.read_csv(r”路徑\檔名.副檔名”),如何移除list中的nan元素?math.isnan(),如何計算新光增有利IRR?numpy_financial(array) ;輸出csv檔時如何去掉index跟header?如何選擇要寫入的直欄columns? dfFinal.to_csv(fpath, index=False, header=None, columns=[0,1]) Python如何讀寫csv逗點分隔檔(每列內容為新光增有利現金流)?pandas.read_csv(r”路徑\檔名.副檔名”),如何移除list中的nan元素?math.isnan(),如何計算新光增有利IRR?numpy_financial(array) ;輸出csv檔時如何去掉index跟header?如何選擇要寫入的直欄columns? dfFinal.to_csv(fpath, index=False, header=None, columns=[0,1])](https://i0.wp.com/savingking.com.tw/wp-content/uploads/2022/11/20221110122900_3.png?quality=90&zoom=2&ssl=1&resize=350%2C233)




近期留言