| sumproduct函數(shù)在多條件統(tǒng)計中具有王者之風(fēng),是一個Excel高手必備的技能之一。 
	基本用法 = sumproduct(array1, array2, array3, ...)它可以支持最高30個參數(shù)。但必須要注意,這里每個參數(shù)都必須為數(shù)值型,連邏輯型都不行。所以任何以下式子得到的結(jié)果都是0: = sumproduct(A1:A100, B1:B100<>"a") ' 錯誤用法,結(jié)果總是返回0!解決方法之一是通過顯性或隱性的轉(zhuǎn)換將邏輯值轉(zhuǎn)為數(shù)值型: 
	= sumproduct(A1:A100, N(B1:B100<>"a"))      ' 顯性轉(zhuǎn)換 = sumproduct((A1:A100)*(B1:B100<>"a"))使用連乘的技術(shù)原理可參考Excel區(qū)域計算的原理。它比上面的多參數(shù)形式運算速度要稍微慢一些,但也有以下兩個好處: 
	·連乘的表達(dá)式不需要轉(zhuǎn)換邏輯表達(dá)式,寫法更為簡單。 = sumproduct((A1:A100)*((B1:B100="a")+(B1:B100="b")))即sumproduct可以實現(xiàn)嵌套的條件求和(包括and和or),而sumifs只能實現(xiàn)并列條件求和(即只能是and)。其實sumproduct的適用范圍要寬的多,比如以下條件求和,sumifs都無法實現(xiàn): 
	= sumproduct((A1:A100)*((C1:C100+D1:D100)>0))  
	= sumproduct((A1:A100)*(C1:C100<D1:D100))      
	= sumproduct((A1:A100)*(LOG(C1:C100,2)))          = sumproduct((A1:A100)*((B1:B100="a")+(B1:B100="b"))){= sum((A1:A100)*((B1:B100="a")+(B1:B100="b")))}但數(shù)組公式難以被理解,輸入速度慢(無法拖動等等),并且一般情況下數(shù)組公式比普通公式效率要低,所以能用普通函數(shù)實現(xiàn)的功能,建議直接使用普通函數(shù)。 
	加權(quán)平均值 
	= sumproduct(value*weight) / sum(weight)公式可包含數(shù)據(jù) = sumproduct((A1:A4)*{1;2;3;4}) 注意下面公式得到的結(jié)果是一樣的,但運算效率要低很多。從Excel區(qū)域計算的原理知道,下面的式子中sumproduct的參數(shù)被展開成一個4×4的方塊,所以運算速度要慢一個級別(線性 vs 平方): = sumproduct((A1:A4)*{1,2,3,4}) 這里區(qū)別在于”;”號表示換行,而”,”號表示下一列,所以{1;2;3;4}是一個列向量,而{1, 2, 3, 4}是一個行向量。我們也可以將其結(jié)合,{1,2,3,4;5,6,7,8;9,10,11,12;}是一個3×4的矩陣。 | 
|  |