excelperfect
問題的提出:我們有一些有關在客戶服務團隊中工作的三個人的電話呼叫信息,如下圖1所示。
圖1
對于每個人,電話呼叫數(shù)量拆分成兩類:ACD和AMS,我們需要從數(shù)據(jù)集中得到ACD的平均數(shù),并且統(tǒng)計的平均值不應考慮0值所在的單元格,因此正確的答案應該是56:
(24+21+99+67+87+6+88)/7=56
在這種情況下,我們要執(zhí)行條件平均:要忽略包含0的單元格。通常,我們可以使用AVERAGEIF函數(shù)來執(zhí)行此操作,但由于ACD數(shù)據(jù)位于三個單獨的或不連續(xù)的單元格區(qū)域內(nèi),因此我們無法利用此函數(shù)執(zhí)行此操作。此公式將返回#VALUE!錯誤,因為AVERAGEIF函數(shù)無法處理非連續(xù)區(qū)域:
=AVERAGEIF((B3:B7,D3:D7,F3:F7),'<>0')
要獲取不連續(xù)的區(qū)域的平均值,我們通常可以使用SUM/COUNT函數(shù),如下所示:
=SUM(B3:B7,D3:D7,F3:F7)/COUNT(B3:B7,D3:D7,F3:F7)
但問題是,COUNT函數(shù)統(tǒng)計結果將包括0,因此上面的公式返回26.13,顯然是不正確的。
試圖使用COUNTIF函數(shù)替換COUNT函數(shù)來忽略0值,但是COUNTIF函數(shù)不能用于不連續(xù)區(qū)域,因此公式將返回#VALUE!:
=SUM(B3:B7,D3:D7,F3:F7)/COUNTIF((B3:B7,D3:D7,F3:F7),'<>0')
因此,問題是如何從這些單元格中獲得非零值的數(shù)量?
解決方法
要獲得正確的答案,可以使用下面的公式:
=SUM(B3:B7,D3:D7,F3:F7)/INDEX(FREQUENCY((B3:B7,D3:D7,F3:F7),0),2)
注意,這不是一個數(shù)組公式,因此不需要按Ctrl+Shift+Enter組合鍵。
公式中:
SUM(B3:B7,D3:D7,F3:F7)
很好理解,求這三個區(qū)域的數(shù)值之和。
公式中:
FREQUENCY((B3:B7,D3:D7,F3:F7),0)
其中,data_array是(B3:B7,D3:D7,F3:F7),bins_array是0,將返回一個包含兩個數(shù)值的數(shù)組,第一個值是data_array中等于0的數(shù)量,第二個值是data_array中大于0的數(shù)量,因此將返回數(shù)組:
{8;7}
傳遞給INDEX函數(shù):
INDEX({8;7},2)
得到:
{7}
即上述區(qū)域中不等于0的數(shù)值的數(shù)量。
因此,公式等價于:
=392/{7}
結果:
56
如果有空單元格,或者即使非連續(xù)區(qū)域的大小不同,該公式仍然適用。
其它公式
其它公式1:
=SUM(B3:B7,D3:D7,F3:F7)/(COUNTIF(B3:B7,'<>0')+COUNTIF(D3:D7,'<>0')+COUNTIF(F3:F7,'<>0'))
其它公式2:
=AVERAGE(IF(B2:G2='ACD',IF(B3:G7>0,B3:G7)))
或:
=AVERAGE(IF((B3:G7>0)*(B2:G2='ACD'),B3:G7))
注意,公式是數(shù)組公式,因此應按Ctrl+Shift+Enter組合鍵完成公式輸入。
其它公式3:
=SUM(B3:B7,D3:D7,F3:F7)/SUM(COUNTIF(INDIRECT({'B3:B7','D3:D7','F3:F7'}),'<>0'))
你還有沒有好的解決方法呢?
注:本文整理自colinlegg.wordpress.com,供有興趣的朋友學習參考。
歡迎到知識星球:完美Excel社群,進行技術交流和提問,獲取更多電子資料。
聯(lián)系客服