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

另一個合乎條件加總的陣列公式範例

在4千多筆交易資料中,記載了每一筆交易的類型代號,以及該筆交易的費用。如下圖所示,將儲存格範圍B2:B4755命名為「類型代號」;將資料範圍C2:C4755命名為「費用」後,若想知道隸屬於某一個類型代號的總費用,那麼一個SUMIF函數便可以解決囉!
 

譬如:
=SUMIF(類型代號,"AE1",費用)
傳回的結果便是所有AE1的費用加總
=49253
 

若將AE1改成AE2,即
=SUMIF(類型代碼,"AE2",費用)
傳回的結果便是所有AE2的費用加總
=48276

那麼,若要將隸屬於AE1AE2AE5AE10BH6以及QR4等六種類型代號的費用全部加總起來,一定要寫成6個SUMIF函數,再連加起來的冗長公式嗎?例如:

=SUMIF(類型代號,"AE1",費用)+SUMIF(類型代號,"AE2",費用)+SUMIF(類型代號,"AE5",費用)+SUMIF(類型代號,"AE10",費用)+SUMIF(類型代號,"BH6",費用)+SUMIF(類型代號,"QR4",費用)

當然沒問題,不過這也太天才了吧!雖然能夠得到正確的結果(285600),難道就沒有別的解決方式嗎?
 

當然有!例如:我們可以先將各個想要進行核對比較的類別代號,輸入在一個連續範圍的儲存格裡,譬如:E4:E9,分別輸入「AE1」、「AE2」、「AE5」、「AE10」、「BH6」與「QR4」,如此,在隔壁的儲存格F4裡便可以輸入SUMIF公式:
=SUMIF(類型代號,E4,費用)
便可以傳回所有AE1的費用加總了。然後,再將此公式往下填滿至儲存格E9,隸屬於六項類型代號的各個總費用不就完成運算了嗎!

最後,再將這個輔助運算範圍F4:F9,利用SUM函數加總起來,不就可以傳回全部六個類型代號總費用的總計了!答案也正是285600。
 

想想,這最後輔助範圍F4:F9,也不正是此系列文章所要傳達的陣列概念嗎?也就是說,將=SUMIF(類型代號,E4,費用)的準則參數,從原本的單一儲存格E4,改寫成E4:E9,即:

=SUMIF(類型代號,E4:E9,費用)

那麼,以陣列公式的角度來看,可以傳回:

{49253,48276,47260,45074,46683,49054}

若是外面再包一層SUM,不就是所要的結果了:

=SUM({49253,48276,47260,45074,46683,49054})

因此,這又是一個陣列的寫法:

=SUM(SUMIF(類型代號,E4:E9,費用))

輸入完公式,按下Ctrl+Shift+Enter按鍵,完全不需要使用F欄事先個別計算SUMIF,只要一個陣列公式就可以一次達陣,傳回結果285600,酷吧!
 

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