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

關於常數陣列的運用~

對於一個簡單數學算式來說:
 

X跟Y都是變數(variable)、3與6則是常數(constant)。對應到工作表的儲存格,則僅能存放一個值的儲存格,便是身為變數的角色,例如:

儲存格A1若是變數x、
儲存格A2若是變數y、
3與6都是常數,
將上述的算式撰寫在儲存格A4,則應輸入:
=A1^2-3*A2+6

其中,「^」代表次方;「*」代表乘法運算。因此,運算結果將是「7」。如果變更了儲存格A1與A2內容,也就是變數的值,例如:分別改成「2」與「3」,則公式的計算結果將傳回「1」。

那麼,以陣列的角度來看待呢?對於儲存格範圍A1:E1而言,是一個橫向的5個儲存格範圍,可以儲存5個值。譬如:輸入了5個部門的名稱,若以陣列的角度來看,這個範圍的5個儲存格就如同是陣列變數般,可以儲存5個可變動的值。如果儲存格裡的值有所變動,例如:儲存格D1裡的「企劃室」變更為「企劃部」,就代表這個陣列變數的內容有所異動。

當然,若是陣列裡的值都不會變動,則也可以藉由陣列常數的方式來描述。在Excel環境裡,可以透過名稱管理員的操控來建立陣列常數。而陣列的符號是一對大括弧,在定義一個橫向的陣列常數時,大括弧裡的各個元素是以逗點「,」做為分隔符號。例如:

{"業務部","行銷部","資訊部","企劃部","總務課"}

以上述的實例而言,我們可以建立一個名為「部門」的名稱,並定義此名稱儲存著此陣列常數的內容。

這是一個橫向的常數陣列,因此,以後若要將此陣列呈現在活頁簿裡的實際儲存格內,則可以事先選取橫向的5個空白儲存格後,輸入「=部門」然後按下Ctrl+Shift+Enter按鍵,即可完成橫向一維陣列的建立。

若是要定義一個縱向的陣列常數,則大括弧裡的各個元素是以分號「;」為分隔符號。例如:

{"A型";"B型";"AB型";"O型"}

針對上述的實例而言,便可以透過名稱管理員,建立一個名為「血型」的名稱,並定義此名稱儲存著此陣列常數的內容。

以後若要將此縱向的常數陣列呈現在活頁簿裡的實際儲存格內,則可以事先選取縱向的4個空白儲存格後,輸入「=血型」然後按下Ctrl+Shift+Enter按鍵,即可完成縱向一維陣列的建立。

若是要建立一個二維陣列常數,也不是一件難事喔!以下我們就來瞧瞧,要如何建立一個3欄6列,可以存放各要計算業績獎金時的業績等級之級距、獎金比例,以及福利金的陣列:
 

也就是:
{"級距","獎金比例","福利金";0,0%,0;8000,0.02,50;20000,0.035,150;35000,0.05,300;80000,0.07,500}

例如:使用名稱管理員,建立一個名為「獎金對照表」的名稱,並定義此名稱為此二維陣列常數的內容。
 

以後若要將此二維的常數陣列呈現在活頁簿裡的實際儲存格裡,則可以事先選取三欄六列的空白儲存格後,輸入「=獎金對照表」然後按下Ctrl+Shift+Enter按鍵,即可完成二維陣列的建立。
 

當然,既然是陣列常數,倒不一定要將陣列呈現在工作表的儲存格裡方能運用,而是在使用Excel公式時,可以適時的去參照所要運用的陣列。例如:根據業績金額,透過VLOOKUP函數,去參照上述的「獎金對照表」陣列常數,以順利進行查詢,取得獎金比例與福利金。

譬如:儲存格B2的值是9528,透過以下的VLOOKUP函數,可以取得獎金比例:

=VLOOKUP(B2,獎金對照表,2,True)

再將上述函數乘以B2便是業績金額9528的獎金囉!也就是:

=VLOOKUP(B2,獎金對照表,2,True)*B2

至於福利金的計算,則是以下的VLOOKUP函數:

=VLOOKUP(B2,獎金對照表,3,True)

完成公式後往下填滿,每一位業務員的獎金與福利金就計算出來了。而整個獎金比例對照表並不需要輸入在實際的儲存格範圍裡,而是建立在一個已命名的陣列常數裡。

如果陣列裡的內容是屬於恆久不變的資料,則陣列常數的應用很不錯吧!

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