1. 程式人生 > >excel陣列公式中的意想不到的坑

excel陣列公式中的意想不到的坑

在使用EXCEL的陣列公式中,從以下的學校班級成績資料中,計算出每個學校和班級中成績的最大分,最小分,和平均分及總分,結果如圖。


在計算最大,總分,平均分時,使用陣列公式:{=MAX((Sheet1!$A$2:$A$49=$A2)*(Sheet1!$B$2:$B$49=$B2)*(Sheet1!$C$2:$C$49))},{=AVERAGE((Sheet1!$A$2:$A$49=$A2)*(Sheet1!$B$2:$B$49=$B2)*(Sheet1!$C$2:$C$49))},{=SUM((Sheet1!$A$2:$A$49=$A2)*(Sheet1!$B$2:$B$49=$B2)*(Sheet1!$C$2:$C$49))}均正常,唯有求最小值時,使用公式{=MIN((Sheet1!$A$2:$A$49=$A2)*(Sheet1!$B$2:$B$49=$B2)*(Sheet1!$C$2:$C$49))}時,結果均為0,後經過仔細反思才知道,原來在邏輯值相乘的過程中,那些false被EXCEL預設為0,導致所有結果為false的公式結果都為0,在求最大,平均和求和的過程中,0的作用不明顯,只有求最小值時,對結果產生干擾,因此,在求最小值的公式中,不能使用上面的方法,因此,改用IF函式進行判斷,{=MIN(IF(((Sheet1!$A$2:$A$49=$A2)*(Sheet1!$B$2:$B$49=$B2)),Sheet1!$C$2:$C$49))},這時的結果才正常。

陣列公式中使用邏輯值相乘的方法雖然網上類似的解答很多,但很多一帶而過,並沒有詳細的解釋,求最小值時極容易導致錯誤,應引起注意。