要成為一名 Excel 高級用戶,您需要知道如何使用數(shù)組公式,它能執(zhí)行非數(shù)組公式所不能執(zhí)行的計算。 本招介紹一些高級的數(shù)組公式。 示例1:對包含錯誤值的區(qū)域求和。 當(dāng)試圖對包含錯誤值(例如 #N/A)的區(qū)域求和時,Excel 中的 SUM 函數(shù)不再適用。本示例演示如何對包含錯誤的命名為“數(shù)據(jù)區(qū)”的區(qū)域中的值求和。 {=SUM(IF(ISERROR(數(shù)據(jù)區(qū)),"",數(shù)據(jù)區(qū)))} 該公式創(chuàng)建一個新數(shù)組,包含除錯誤值以外的原始值。從內(nèi)層函數(shù)開始向外運算,ISERROR 函數(shù)在單元格區(qū)域 (數(shù)據(jù)區(qū)) 中搜索錯誤。IF 函數(shù)在指定的條件計算結(jié)果為 TRUE 時返回指定值,在計算結(jié)果為 FALSE 時返回另一個值。在此處,它為所有錯誤值返回空字符串(""),因為它們的計算結(jié)果為TRUE,并且返回該區(qū)域 (數(shù)據(jù)區(qū)) 中的其他值(因為這些值計算結(jié)果為 FALSE,表示它們不包含錯誤值)。接著 SUM 函數(shù)計算篩選出的數(shù)組的總和。 示例2:計算區(qū)域中錯誤值個數(shù)。 本示例與上面的公式相似,但它返回名為“錯值區(qū)”的區(qū)域中的錯誤值個數(shù),而不是將錯誤值篩選掉: {=SUM(IF(ISERROR(錯值區(qū)),1,0))} 該公式創(chuàng)建一個數(shù)組,它為包含錯誤的單元格包含值 1,為不包含錯誤的單元格包含值0??梢院喕摴剑⑦_到相同的結(jié)果,方法是移除 IF 函數(shù)的第三個參數(shù),如下所示: {=SUM(IF(ISERROR(錯值區(qū)),1))} 如果未指定該參數(shù),IF 函數(shù)在單元格不包含錯誤值時返回 FALSE??梢赃M一步簡化該公式: {=SUM(IF(ISERROR(錯值區(qū))*1))} 此公式版本可以執(zhí)行計算是因為 TRUE*1=1 并且 FALSE*1=0。 示例3:條件求和。 有時候需要有條件的求和。下面的數(shù)組公式僅對名為“銷售量”的區(qū)域中的正值求和: {=SUM(IF(銷售量>0,銷售量))} IF 函數(shù)創(chuàng)建正值和 false 值數(shù)組。 還可以對滿足多個條件的值求和。例如,下面的數(shù)組公式計算大于 0 并且小于等于 3 的值: {=SUM((銷售量>0)*(銷售量<=3)*(銷售量))} 還可以創(chuàng)建使用 OR 條件的數(shù)組公式。例如,可以對小于 3 和大于 4 的正值求和: {=SUM(IF((銷售量<3)*(銷售量>0)+(銷售量>4),銷售量))} IF 函數(shù)查找所有小于 3 和大于 4 的正值,然后將這些值傳遞給 SUM 函數(shù)。 示例4:計算零以外的平均值。 本示例是需要對區(qū)域中的值求平均值時,如何從該區(qū)域中移除零。下面的公式使用名為“銷售量”的數(shù)據(jù)區(qū)域: {=AVERAGE(IF(銷售量<>0,銷售量))} IF 函數(shù)創(chuàng)建不等于 0 的值數(shù)組,然后將這些值傳遞給 AVERAGE 函數(shù)。 示例5:計算兩個單元格區(qū)域中的不同值個數(shù)。 此數(shù)組公式對名為“銷售量”和“上期銷售量”的兩個單元格區(qū)域中的值進行比較并返回它們之間不同值的個數(shù)。如果這兩個區(qū)域中的內(nèi)容完全相同,此公式將返回 0。要使用此公式,單元格區(qū)域必須大小相同并且包含相同的維數(shù): {=SUM(IF(銷售量=上期銷售量,0,1))} IF 函數(shù)使用值 0 和值 1 填充數(shù)組(0 表示單元格不匹配,1 表示單元格匹配)。然后 SUM 函數(shù)返回該數(shù)組中的值的和。 示例6:查找區(qū)域中最大值的位置。 下面公式返回“銷售量”區(qū)域最大值的實際單元格地址: {=ADDRESS(MIN(IF(銷售量=MAX(銷售量),ROW(銷售量),"")), MIN(IF(銷售量=MAX(銷售量),COLUMN(銷售量),"")))} 本公式中,IF(銷售量=MAX(銷售量),ROW(銷售量),"")將返回最大值的行號,其它數(shù)據(jù)的行號返回為“”,運用MIN函數(shù)取出這個最大值的行號(因為其它行號都為空,只有最大值的行號返回了)。同理,MIN(IF(銷售量=MAX(銷售量),COLUMN(銷售量),""))返回最大值的列號。 |
|