公式?陣列公式?動態陣列參照? - Excel運算式與公式系列(2/6)

你在工作表儲存格裡所建立的是一般參照公式?還是陣列參照公式?抑或是可使用動態陣列參照的技巧?就來看看並實作演練一下這篇文章的範例吧!

有些Excel使用者在儲存格裡建立公式時,對於一般公式的儲存格或範圍參照(Cell reference and Range reference)、陣列公式參照(Array reference),乃至最新技術的動態陣列參照(Dynamic array reference),總是有些模糊不清的混淆感。我們就透過實際範例操作,來釐清這些觀念與使用情境。以下是員工三次考績的成績資料,記錄在資料範圍B2:D7內。考績60分以上的成績才算及格,所以,要判別一個人的成績是否及格,以下的關係運算式應該是理所當然:

=B2>=60

不過,這個關係運算式僅會傳回一個邏輯值。就是B2這個成績到底及不及格?

若要將這個公式也如法泡製的反應在其他員工的考績成績判別上,那麼,透過拖曳填滿控點(Fill Handle)的操作是最理想也最普遍的做法。

這些公式裡的參照,都是屬於儲存格或範圍參照。我們再換換另一個操作模式來看看,如果將剛剛介紹的關係運算式寫成下列的算式:

=B2:B7>=60

或者儲存格範圍B2:B7有事先進行範圍命名的話,可以寫成:

=第1次考績>=60

我們將這個公式輸入在儲存格G2裡面,那麼,這樣的關係運算式就不是只會傳回一個邏輯值而已,而是一堆邏輯值囉!可是…實際完成公式的輸入,怎麼傳回的僅是一個邏輯值FALSE呢?

試想,前例「=B2>=60」傳回的是一個邏輯值,所傳回的是第一個考績成績「50」是否及格的關係判斷輯結果:FALSE,而剛剛建立的「=第1次考績>=60」應該會傳回第1次考績之每一個成績是否及格的關係判斷輯結果,因此,理應傳回六個FALSE與TRUE才對啊!若以集合的符號來描述,應該是產生:

{FALSE,FALSE,TRUE,TRUE,FALSE,TRUE}

那麼,這個公式所傳回的六個邏輯值要怎麼呈現在單一儲存格G2裡呢?所以,結果是僅顯示一個邏輯而已囉!這正是所謂陣列公式(array formula)的概念。如果有陣列公式的需求,而且期望陣列公式的運算後所傳回的每一個結果要逐一呈現,那麼在輸入陣列公式之前就要事先分析並確認會有多少個輸出結果,接著,選取多少個儲存格來存放陣列結果後,才開始輸入並完成公式的建立。以此例而言,可以事先選取儲存格G2:G7後,才輸入上述的公式

=G2:G7>=60

=第1次考績>=60

這也就是所謂的陣列參照,不過也要特別注意一件事,那就是在完成陣列公式的編輯後,不是按下Enter按鍵而已,而是要按下Ctrl+Shift+Enter複合按鍵。

在陣列的表示上,我們可以從Excel公式編輯列上看到陣列公式的兩側都會有一對大括號「{」及「}」。

而且,陣列公式也具備了不可局部破壞性的特質。也就是說,如果要編輯或刪除陣列公式,對象一定是整個陣列,而不能僅編輯或刪除陣列裡的局部儲存格內容。若嘗試僅刪除陣列裡的部分成員儲存格,皆會彈跳出警示對話方塊。

在邏輯運算的概念上,FALSE等於是數值0,而TRUE等於是數值1,透過Excel特有的雙負號運算,可以將邏輯值轉換成可進行算數運算的0與1值。譬如:上述的陣列公式為例:

{=第1次考績>=60}

陣列公式可傳回以下結果:

{FALSE,FALSE,TRUE,TRUE,FALSE,TRUE}

若是將陣列公式改寫成:

{=--(第1次考績>=60)}

則陣列公式可傳回以下:

{0,0,1,1,0,1}

那麼,這個陣列結果的內容若要加總起來,也就是將裡面的數值0與數值1全部加總起來所產生的結果值,應該就只是一個數值,透過函數SUM來幫忙,應該是蠻理想的:

=SUM({0,0,1,1,0,1})

所以,可以寫成:

=SUM({=--(第1次考績>=60)})

而這個僅需要一個儲存格來存放運算結果的公式,也是運用了陣列運算的概念,但並不需要大費周章地去踹測、分析與選取多少個儲存格來存放陣列結果,而是僅輸入在一個儲存格裡即可,但輸入完畢後也是要按下Ctrl+Shift+Enter複合按鍵,不能只按Enter按鍵喔!

想想,如果僅是要統計及格的總人數(在儲存格H2),而不是要逐一列出哪些人及格(G欄的運算),那麼上述的陣列公式是不是就很棒了!

另外,如果您使用的是Excel 365的版本,那麼,在陣列公式的需求與編輯上可就更簡便了,因為Excel 365具有動態陣列參照的功能,若使用者建立了具備陣列概念的公式,也就是可能會傳回多個結果值的公式,則只要輸入在單一儲存格裡,便會自動識別所需的範圍,以輸入公式的儲存格為首格而自動延伸範圍陣列參照。這個動態陣列參照也會因為公式的變動而會自動更新參照。

(註:此Excel公式參照與陣列公式參照的實作檔案下載)