從簡單範例談談Excel的陣列公式(4)

再多了解一點點Excel陣列公式的應用,使用邏輯運算,了解Excel陣列公式的應用

以下的範例演練,我將循序漸進地介紹一些Excel運算基礎,結合先前所介紹的陣列公式觀念,來學習更進一步的運用。譬如:A欄位記錄了15家店面的代碼、B欄位記錄著每一家店面的計畫營收、C欄位則記錄著每一家店面的實際營收。那麼,我們要輸入哪一個公式才能夠在不需要輔助欄位的狀態下,就能計算出總共有多少家店面有達到目標呢(也就是實際營收大於或等於計畫營收)?
 

我們先來說明一下,如果是透過輔助欄要怎麼做。例如:D2儲存格輸入公式:
=C2>=B2

這是一個傳回邏輯值的公式寫法,經由關係運算子(>=)的判斷,傳回的結果不是True就是False。當我們將D2儲存格往下填滿,就可以看到一堆的True與False的結果了。這運算結果不是True就是False,也就是邏輯運算結果,稱之為布林值(Boolean):
 

接著,我們再來算算這15家分店的各個判斷結果,總共有幾個True不就好了嗎?哪麼是不是針對這個範圍D2:D16進行加總運算呢?因為,印象中好像曾經聽過有老師講過,True就是1、False就是0。那麼SUM(D2:D16),就可以加總出這個範圍總共有幾個True了嗎?其實不然,這樣的SUM結果,所傳回的是「0」:
 

因為,並非所有支援陣列的Excel函數與計算公式,都可以將布林值True轉換為1、布林值False轉換為0。在許多較複雜一點的公式,您可以透過「--」(連續兩個減號,稱為一元運算子(unary operator),將非數值性的布林值,順利地轉換為數值(0或1)。

因此,在此範例中,我們將儲存格D2裡的公式,改成:
=--(C2>=B2)

然後再往下拖曳填滿控點,就可產生一堆的0與1了:
 

當然,將這堆0與1透過SUM函數加總起來,不就是總共有多少家店面的營收達到標準的計數了嗎!
 

而這是透過輔助欄位的計算解法,承襲先前陣列公式的概念與介紹,相信您已經可以理解到此例的公式:
=--(C2>=B2)

若以陣列公式的角度來撰寫,可以寫成:
=--(C2:C16>=B2:B16)

也就是可以產生15個0或1元素的陣列:
{0,1,0,1,1,1,0,1,1,0,0,1,0,1,0}

那麼,在不需要用到輔助欄(D欄)的情況下,再利用SUM函數將這陣列含括起來,便可以寫成如此陣列公式:
=SUM(--(C2:C16>=B2:B16))

記得要按下Ctrl+Shift+Enter,那麼,這結果不就大功告成了嗎!
 

我們在這篇文章裡裡學習到邏輯運算的概念,也瞭解到一元運算子(unary operator),也就是「--」的用法與範例,相信透過淺顯易懂的例舉,您一定對Excel的陣列公式,有更進一步的心得了吧!

註:此Excel陣列函數系列文章內文實作活頁簿檔案載點