Excel中有一類稱作數(shù)組公式的公式,相對比較復雜,有點難以理解,很多人望而卻步,然而數(shù)組公式很強大,能夠完成很多不可思議的任務,絕對值得學習。
使用數(shù)組公式,可以判斷數(shù)據(jù)是否與指定區(qū)域中的數(shù)據(jù)相匹配,可以統(tǒng)計單元格區(qū)域中不重復值的數(shù)量,可以提取單元格區(qū)域中的不重復數(shù)據(jù),將列數(shù)據(jù)轉換為行數(shù)據(jù),…,等等。本文只是簡單地介紹數(shù)組公式,讓感興趣的朋友對其有所了解,為進一步的研究和應用打下基礎。
為什么要學習和使用數(shù)組公式
使用數(shù)組公式,可以使Excel完成我們認為不可能的任務,或者說要使用VBA才能完成的任務,并且在有些情形下,數(shù)組公式可能是一個非常有效的解決方案。當然,好奇心也會驅使我們想要學習進階去創(chuàng)建更高級的公式,并且在學會數(shù)組公式的基本使用后想要創(chuàng)建更有效的數(shù)組公式。在掌握數(shù)組公式后,在面對創(chuàng)建Excel解決方案時又多了一份新的武器。我想,這可能是想要學習數(shù)組公式的一些原因。
在某些情形下,除非使用VBA,使用數(shù)組公式可能是實現(xiàn)目的的唯一辦法。在使用普通的公式時,我們可能需要輔助列或一些中間步驟,然而,數(shù)組公式可以提供一次性的解決方案,省掉中間步驟。當然,高級篩選、數(shù)據(jù)透視表、以及新增的一些數(shù)組函數(shù)能夠解決使用數(shù)組公式實現(xiàn)的任務,但是當輸入發(fā)生變化時它們不能自動更新或者存在某些局限,然而數(shù)組公式能夠立即更新,這是其一大優(yōu)勢。
什么是數(shù)組公式
在認識數(shù)組公式之前,先看看通常對于下圖1所示的工作表求總銷售額的過程。
圖7
這個數(shù)組公式使用IF函數(shù)來測試多個單元格。比較單元格區(qū)域B2:B9中的數(shù)值是否大于60,返回一個包含布爾值的數(shù)組{TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE},然后IF函數(shù)根據(jù)該數(shù)組中的值,如果為TRUE則返回B2:B9中的值,為FALSE則返回FALSE。擴展后的公式如下:
=AVERAGE(IF({TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE},{89;92;78;56;88;58;95;55},{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}))
注意,在原公式最后的FALSE被擴展成一個與前面數(shù)組相匹配的適合大小的數(shù)組。
在IF函數(shù)測試完成后,得到下面的中間結果:
=AVERAGE({89;92;78;FALSE;88;FALSE;95;FALSE})
AVERAGE函數(shù)忽略布爾值(TRUE或FALSE),僅對數(shù)值求平均值。
示例2:計算排名前3的學生成績之和
仍以圖7所示的工作表為例,要求前3名的學生成績之和。
可以使用數(shù)組公式:
=SUM(LARGE(B2:B9,ROW(1:3)))
其中,ROW(1:3)返回數(shù)組{1;2;3}。LARGE函數(shù)依次取單元格區(qū)域B2:B9中的最大值、第2大及第3大值,返回數(shù)組{95;92;89},然后將其作為SUM函數(shù)的參數(shù)求和。
示例3:計算數(shù)值單元格中各數(shù)字之和
在單元格A1中的數(shù)值為12345,要通過公式得出1+2+3+4+5的值。
可以使用數(shù)組公式:
=SUM(1*MID(A1,ROW(INDIRECT(“1:”& LEN(A1))),1))
LEN函數(shù)計算單元格A1中字符的長度,因此上面的公式變?yōu)椋?/p>
=SUM(1*MID(A1,ROW(INDIRECT(“1:6”)),1))
INDIRECT函數(shù)返回對第1至6行的引用:
=SUM(1*MID(A1,ROW(1:6),1))
然后擴展成為:
=SUM(1*MID(A1,{1;2;3;4;5;6},1))
MID函數(shù)依次取單元格A1中的字符,每次1個:
=SUM(1*{“1”;”2”;”3”;”4”;”5”;”6”})
將1與數(shù)字文本相乘將其轉換為數(shù)字:
=SUM({1;2;3;4;5;6})
最后,SUM函數(shù)對數(shù)字數(shù)組求和。
結語
數(shù)組公式大大擴展了公式的能力,為Excel的應用開辟了一片新天地。然而,要想精通并熟練運用數(shù)組公式,需要大量深入的練習,但絕對值得學習。