從第一篇關於函數之一二的文章中,相信大家對函數的概念與應用,應該有了一定程度的理解。Excel提供有數百個現成的函數可供使用者靈活運用於各類報表、試算等需求。這一篇幅我們就來細說Excel環境裡的函數運用與客製化議題。
Excel函數使用時
在大家熟悉的Excel應用程式中,函數算是一種工具,是預先定義的公式,可運用於簡化數據資料的處理和運算。在Excel的儲存格裡輸入函數時,通常以等號開頭,緊接著函數名稱和參數。此時畫面會顯示函數語法的提示,例如:輸入SUM函數時,會顯示:

SUM(number1,[number2],...)
這表示SUM函數可以將小括號裡各個參數所代表的數值相加總,而參數的左右兩側若有中括號框起,則代表此參數可以省略,因此,這也表示著SUM函數至少要有一個參數,而根據微軟官方的說明,此SUM函數最多可以接受255個參數。這也意味著您可以將多達255個不同的範圍或數值輸入到一個SUM函數中。我們就來看看以下幾個範例。例如:
=SUM(A1,B1)
其中,SUM是函數名稱,A1及B1則是此函數裡的兩個參數。這兩個參數都是儲存格位址,因此,此SUM函數的執行結果將傳回儲存格A1的內容值與儲存格B1的內容值之加總結果。

=SUM(C2:C11)
則是另一種SUM函數的表現,此函數裡僅有一個參數,而此參數是一個範圍標示「C2:C11」,這便意味著此SUM函數的執行結果將傳回儲存格範圍C2:C11的總和。

=SUM(A5,285,F2:H5,A1+B1)
又是另一種SUM函數的表示,此函數裡包含了4個類型不同的參數,第1個參數「A5」是很明確的儲存格位址;第2個參數「285」則是單純的整數值285;第3個參數無庸置值是一個範圍標示「F2:H5」(共有12個儲存格);最後一個參數則是個運算式「A1+B1」。這便意味著此SUM函數的執行結果將傳回這4個參數值的內容與運算結果的總和。

從上述的幾個SUM函數寫法,可以了解參數是函數的補給靈魂。我們再看看另一個常用的函數ROUND,這是一個似四捨五入的精算函數,在輸入ROUND函數時,會顯示:

ROUND(number,num_digits)
這表示ROUND函數裡必須包含兩個缺一不可的參數(因為,都沒有中括號的標示),其中number代表要進行四捨五入的數值;num_digits代表小數位數,用來決定數字的精確度。所以,num_digits一定是一個整數值),且可以是正整數或負整數。其作用如下:
- 正整數:將數字四捨五入到小數點後的位數。例如:=ROUND(A2,3)
表示此ROUND函數裡的第一個參數是要執行四捨五入的數值,位於儲存格位址A2;第二個參數則是小數位數,因此,此例的結果會將儲存格A2的值進行四捨五入到小數點後3位的轉換。所以,若儲存格A2的值是「1923.456789」。

- 負整數:將數字四捨五入到小數點前的位數。例如,=ROUND(A2, -2)
表示此ROUND函數裡的第一個參數是要執行四捨五入的數值,仍是位於儲存格位址A2的值;第二個參數是-2,因此,此例的結果會將儲存格A2的整數值進行四捨五入到小數點前2位的轉換。而針對小數點前兩位23,進行四捨五入後是00,因此其四捨五入後的結果會是1900,也就是將數字四捨五入到最接近的百位數(即小數點前2位)。

簡單地說,第二個參數的正負號決定了數字的四捨五入位置:正整數用於小數點後(小數點右側)的位數,負整數用於小數點前(小數點左側)的位數。
若是未提供第二個參數,直接寫成:
=ROUND(A2)
將會有[您已針對此函數輸入太少引數。]的警示訊息。

再來聊聊PMT這個我覺得大家都該瞭解的古老函數。PMT是Payment的縮寫,此函數是Excel中特別適用於計算等額分期付款下的貸款還款額或儲蓄計劃中的定期存款金額。不管是借貸還是儲蓄投資計劃,都是非常生活化、工作化的實務函數。例如:在貸款時計算出每期償付的本利,就是很實用的案例。在輸入PMT函數時,會顯示:

=PMT(rate, nper, pv, [fv], [type])
姑且不論這些參數代表什麼意思,相信您已經可以解讀此函數可以輸入5個參數,其中前3個參數rate、nper、pv是不可或缺的,而後2個參數fv及type則是屬於可省略的選項參數。例如:在貸款金額80萬,年利率1.85%,貸款期限6年的條件下,透過PMT函數,帶入這三個值做為參數,便可計算出每個月要償還的本利為:$11,747.74。

要注意的是PMT函數裡的參數各有其意義,順序是不能肆意對調的。
- 第1個參數rate是貸款的年利率。
- 第2個參數nper則是貸款的總期數預設也是以年為單位。
- 第3個參數pv原意為「現值」(Present Value),指的是當前需要貸款或借款、投資的金額,也就是本金。
- 第4個參數fv原意為「未來值」(Future Value),指的是在最後一次付款或投資後所希望達到的金額。以此範例而言,最後一次償款本利後,就是0(還清了,已不再欠款),所以就省略不用輸入了(未輸入此參數即預設為0)。
- 第5個參數type的值非0即1,指的是付款類型,若此參數值輸入為0表示期末支付,輸入為1表示期初支付,若省略未輸入此參數值,則預設為0。
參數裡關於利率、期數等參數的預設單位都是「年」,而此範例我們追求的是每月償付的本利,因此,必須事先調整為以月為單位,也就是年利率必須先除以12、期數年必須先乘以12:
=PMT(B2/12, B3*12, B4)
不需要輸入第4個參數fv(預設為0),以及第5個參數type(預設為0)的公式下,此番貸款的情境即可解讀為:貸款80萬,年利率1.82%,貸款6年,每期(月)期末繳交金與利息$11,747.74,60個月後繳清貸款。
此外,功能強大PMT函數,運用在投資或儲蓄上,也是挺好用的喔!譬如以下情境:我想要在10年後擁有120萬的資金,而投資標的年利率是4.85%,每個月要存入多少錢才能達到擁有120萬的金額。這時候,透過PMT函數來計算也是件輕而易舉的事,其中的參數值之設定如下:
- 目標未來值 fv = 1200000
- 年利率 rate = 4.85%
- 投資期限 nper = 10年× 12個月 = 120個月
- 現值 pv = 0
- 若是每期(月)期末投入金額,則參數type的值 = 0或者省略部輸入
因此,
=PMT(4.85%/12, 120, 0, 1200000, 0)
=8711.39
如此便可解讀:每個月的月底(期末)存入$8,711.39的定期定額下,10年後(120個月)便會有120萬的資金。
不需要參數的Excel函數
Excel提供了數百個內建函數供使用者運用,大多數的函數都需要提供參數方能進行運算,也有少部分函數不需要任何參數即可傳回特定意義的結果值。例如:

要計算每月需要投入的金額,可以使用Excel中的PMT函數。PMT函數能根據利率、期數和目標未來值來計算每期的支付金額。
Excel的自訂函數VBA
從前一篇文章的介紹,大家應該對「函數」的功能有了一定的瞭解與認知,那就是函數都有著特定的目的與功能,在透過參數的供給後而運算並傳回所需的結果值。在Excel環境裡,除了內建的函數外,使用者也可以透過VBA程式碼的撰寫,建立客製化的自訂函數。例如:建立一個名為Freight的函數,可以傳回整數型態的結果。此函數包含2個參數,第一個是參數是整數型態的price、第二個是參數是整數型態的qty。運費Freight的計算規則是當總價低於6000元,運費是250,否則運費為0。
