Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

關(guān)于用SUMPRODUCT取代SUM數(shù)組公式的想法

1970-1-1 08:00| 發(fā)布者: gdliyy| 查看: 3139| 評(píng)論: 0

家用過數(shù)組公式的都可能知道,對(duì)于多條件求和或計(jì)數(shù),我們一般都采用這種數(shù)組公式來(lái)計(jì)算。如:
對(duì)于1個(gè)明細(xì)數(shù)據(jù)(見例),我們需要求該班男、女生各科成績(jī)大于各科平均分的人數(shù),這個(gè)問題不難,大家一般都會(huì)用sum()來(lái)多條件求值就行了(注:數(shù)組公式):
=SUM(($C$3:$C$428=$K3)*(D$3:D$428>=AVERAGE(D$3:D$428)))

確實(shí)這是解決問題的一種方法,但往往對(duì)于初用數(shù)組公式的朋友常常會(huì)遺忘(或不知道)用(Ctrl+shift+Enter)組合鍵來(lái)結(jié)束編輯(論壇中常常有類似的提問)。

出于這個(gè)原因,我想到能否用SUMPRODUCT()函數(shù)來(lái)代替常用SUM()多條件求和公式呢?結(jié)果答案是肯定的。
把上面的公式稍做修改,請(qǐng)見:

=SUMProduct(($C$3:$C$428=$K3)*1,(D$3:D$428>=AVERAGE(D$3:D$428))*1)
而且直接用Enter來(lái)結(jié)束,函數(shù)仍然可以正確計(jì)算結(jié)果。

原因在于:SUMPRODUCT()函數(shù)本身就支持?jǐn)?shù)組間運(yùn)算(相同尺寸的數(shù)組相乘后再加總),因此我們毋須用數(shù)組公式組合鍵來(lái)結(jié)束。
另:提醒大家一點(diǎn),如果大家試圖將公式改為:

=SUMProduct(($C$3:$C$428=$K3),(D$3:D$428>=AVERAGE(D$3:D$428)))
公式不能得出正確結(jié)果。

如果多個(gè)條件這樣并列寫入,系統(tǒng)默認(rèn)是用AND關(guān)系(即相乘)來(lái)運(yùn)算,但是SUMPRODUCT不支持邏輯值數(shù)組常量間相乘(也算是小遺憾吧:)),因此請(qǐng)一定要將邏輯值轉(zhuǎn)換成數(shù)值才行。
大家可能覺得麻煩,因此我建議使用縮寫公式,實(shí)際上是將多個(gè)數(shù)組參數(shù)變?yōu)橐粋(gè)數(shù)組,也就可以避免不同維數(shù)數(shù)組間相乘而帶來(lái)的錯(cuò)誤麻煩了。

=SUMProduct(($C$3:$C$428=$K3)*(D$3:D$428>=AVERAGE(D$3:D$428)))
同理:我們?nèi)绻枰蟪鏊心猩锌偡执笥谄骄偡值乃锌偡,我們也可以用公式?BR>=SUMPRODUCT(($C$3:$C$428=$K13)*(I$3:I$428>=AVERAGE(I$3:I$428)),I$3:I$428)

如果數(shù)組尺寸(即行列數(shù))相同,建議使用這種方法,如果直接相乘出現(xiàn)錯(cuò)誤,可能是I列出現(xiàn)非數(shù)值字符,用逗號(hào)分隔后,系統(tǒng)可以自動(dòng)忽略非數(shù)值型數(shù)據(jù)的。

最新評(píng)論

相關(guān)分類

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 08:36 , Processed in 0.070096 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部