[摘 要] 自定義函數是計算機輔助財務決策的重要工具,其在創建和使用過程中經常會存在一些問題,本文對這些問題進行分類并分析其原因,提出解決對策。
[關鍵詞] 自定義函數;財務決策;財務管理模型
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2010 . 07 . 015
[中圖分類號]F275;F232 [文獻標識碼]A [文章編號]1673 - 0194(2010)07 - 0030 - 03
隨著市場競爭的日趨激烈,企業財務決策對企業經營成敗的重要影響日益顯現。有遠見、有能力的企業紛紛尋求適合自己企業的財務管理軟件,以幫助企業做出科學、快速的財務管理決策。而實際上,能夠具備上述條件的企業在我國仍屬少數。大多數企業雖然已經認識到財務管理軟件輔助財務決策的重要性和必要性,但受經濟實力和人才素質的限制,無法通過上述途徑改善企業財務決策。在這種情況下,一門以Excel為工具輔助財務管理決策的課程——計算機財務管理應運而生。該課程的顯著特點是以最低廉的購買成本和維護成本創建適用于各類型財務管理決策的模型,以幫助不懂計算機編程知識的人員實現財務管理決策的科學化。在實務中,使用Excel創建財務管理模型并應用已經得到了廣泛的認可。自定義函數是其中的一個典型代表。自定義函數是Excel提供的允許用戶自主設計的一種函數,其以快捷、簡單和實用為主要特征。編寫成功的函數可以視同Excel自帶的函數使用。本文全面介紹自定義函數的應用范圍、在應用中可能存在的問題并結合實際經驗提出解決問題的對策。
一、自定義函數在計算機財務中的應用
1. 自定義函數的基本原理
自定義函數是Excel提供的應用VBA語言編寫的一種宏程序。其定義及使用符合Excel自帶函數的所有特征,由函數名、參數和公式組成。因此,用戶創建自定義函數只需要自己定義一個函數名稱,指定其參數并將函數名稱和參數之間的關系定義清楚即可。雖然該自定義函數名義上是使用VBA語言編寫,但在實際應用過程中,基本上不需要太多VBA語言的知識。
2. 自定義函數的應用范圍
自定義函數輔助財務決策的途徑便是建立一個可以使用的函數,而該函數定義名稱并指定參數后,最重要的是在函數名稱和參數之間確定一個計算公式。因而,除了Excel自身提供的折舊函數、資金時間價值計算相關的現值、終值、內含報酬率、年金函數外,只要是可以通過公式計算的財務管理模型都可以使用自定義函數。該功能的存在可以使財務管理決策人員放棄對復雜煩瑣的公式的記憶,將更多的精力用于思考決策相關問題,進而做出更科學的決策。具體來說,自定義函數可以應用在如下領域:
(1)籌資決策。籌資決策中資本成本、經營杠桿和財務杠桿、證券發行價格以及外部資金需要量的測算等都需要使用或簡單或復雜的公式,因此可以利用自定義函數功能。
(2)營運資金管理。營運資金管理中的現金最佳持有量、經濟訂貨批量的計算本身都是以公式的形式存在的。如現金最佳持有量的存貨模式或鮑曼模式、隨機模式等;經濟訂貨批量的基本模型、存貨陸續供應和消耗條件下的經濟訂貨批量模型、缺貨條件下的經濟訂貨批量模型以及存貨相關總成本的計算等。
(3)財務分析與評價。財務分析與評價中存在大量的指標,如償債能力、營運能力、盈利能力和發展能力以及上市公司適用的各類指標,都可以定義成函數。
(4)企業并購。并購過程中目標公司價值評估的各種模型都可以使用自定義函數。
(5)其他。其他包含公式計算的指標如果有必要都可以使用自定義函數,如β系數、期權價值、相關系數等。
3.自定義函數應用步驟舉例
自定義函數創建財務管理模型包含函數的創建和使用兩大過程。創建函數的步驟如下:
(1)在準備好的工作簿中單擊【工具】菜單,選擇【宏】下拉菜單中的【Visua Basic 編輯器】,則打開一個VB編程窗口。在該新窗口中單擊【插入】菜單,選擇【模塊】項,進入模塊1編輯窗口。
(2)在模塊1窗口中,單擊【插入】菜單,選擇【過程】項,則系統彈出【添加過程】對話框。
(3)在添加過程對話框中,【名稱】欄輸入要定義的函數的名稱,如“最佳現金持有量”,【類型】項選擇“函數”,單擊【確定】按鈕,則出現編輯過程頁面。
(4)在編輯過程頁面中指定參數并編輯公式,具體示例如下:
Public Function 最佳現金持有量(年現金需求量, 每次轉換成本, 有價證券收益率)
最佳現金持有量 = (2 * 年現金需求量 * 每次轉換成本 / 有價證券收益率) ^ 0.5
End Function
公式編輯完畢,需關閉模塊編輯窗口,返回Excel工作表中便可以使用該函數了。
使用函數時,同使用其他函數相同,單擊【插入】菜單,選擇【函數】項,類別選擇“用戶定義”,便可于名稱列表中發現剛剛定義函數的名稱,單擊使用即可。
二、自定義函數在計算機財務中應用存在的主要問題及原因分析
自定義函數的原理雖然簡單,但在創建和使用過程中會存在很多問題,這些問題將導致創建的自定義函數丟失、無法使用或計算結果不正確等。具體來說,用戶自己定義的函數在創建和使用中可能存在以下問題:
1.定義過程中系統提示“編譯錯誤”
該問題的產生源于用戶在定義函數過程中使用系統無法識別的字符或字符不夠完整。一般來說,系統只識別英文字符下的標點符號和運算符號。例如,在指定參數過程中,用戶需要在函數名稱后的括號內指定計算該函數的多個參數,參數和參數之間需要使用逗號間隔,該逗號需要采用英文輸入法下的逗號;或者在編輯公式過程中,Excel認可的運算符號包括四則運算符號:+、-、*、/、%、^(指數)、(),比較運算符號:=、>、<、>=(大于等于)、<=(小于等于)<>(不等于),文字運算符號:(連接符號)。
2.使用時無法從“用戶定義”中找到自己定義的函數或無“用戶定義”
該問題的產生一般是由于用戶定義的宏程序不是函數。Excel的宏程序包括兩種:函數和子程序。若用戶進入【添加過程】對話框中沒有選擇“函數”項,則系統將默認為“子程序”,則該定義的宏程序不會出現在【函數】下的“用戶定義”列表中。
3.在用戶定義列表中函數名稱前有文件名及模塊名字樣
很多情況下,用戶按照標準程序定義完成函數后,會發現函數無法使用,其名稱前有文件名稱及模塊名稱字樣,如“book2.xls!模塊1.最佳現金持有量”,單擊該函數則提示該函數不需要參數。該問題的產生在于Excel系統中宏的安全性設置不合適。由于Excel屬于操作性軟件,為了減少感染病毒的機會,Excel會自動將宏的安全性設置為“高”,以防止宏程序運行所帶來的風險。而用戶定義的自定義函數屬于宏程序,便被自動禁止運行,出現上述情況。
4.系統提示“該函數不需要參數”
如果“用戶定義”列表中函數名稱前沒有多余字樣,出現該問題可能有兩種情況:一是用戶在定義過程中忘記指定參數;二是在【Visual Basic編輯器】中存在兩個或多個同名函數。如果用戶忘記指定參數,則系統自然認為該函數不需要參數,因而會出現上述提示。而如果用戶在創建自定義函數的過程中,由于一個函數沒有創建成功而重新創建一個相同名稱的函數或由于疏忽創建了多個相同名稱的函數,則系統無法判斷用戶執行的這個函數名稱應該運行哪個模塊,因而會出現“該函數不需要參數”的提示。
5.函數運算結果不正確
該問題的產生可能有以下4種情況:一是用戶指定的參數不全,導致系統在運用定義公式運算時,將用戶未定義的參數默認為0而導致運算錯誤。二是用于定義的參數與公式中使用的參數名稱不一致。Excel函數在定義過程中要求公式中所使用的參數與用戶指定的參數必須完全一致,該函數才會正常運行。一旦出現指定的參數為“每次轉換成本”,而公式中運用的為“單位轉換成本”,則會導致運算錯誤。三是用戶定義的公式本身錯誤。四是函數名稱同公式中等號左側的名稱不一致,這樣無論公式定義是否正確,返回的運算結果均為0。Excel要求編輯的公式等號左邊的稱謂必須與函數名稱完全一致。
三、解決自定義函數問題的對策建議
要想使定義的函數能夠正常運行并得到正確的運算結果,用戶必須能夠自己檢查函數定義過程中存在的各種問題并有針對性地予以解決。本文將針對上述問題分別提出解決的對策建議。
1.嚴格遵循自定義函數的標準步驟,使用Excel認可的符號
在實際操作過程中,很多用戶忽略自定義函數的標準操作步驟,導致在【添加過程】對話框中忘記選擇【函數】項,進而出現函數定義不成功,找不到定義的函數使用的情況。另外,使用Excel認可的符號也是保證函數定義成功的重要一環。用戶應該熟知Excel認可的符號,如英文輸入法下的逗號,乘除號使用“*”和“/”而非“×”和“÷”,Excel只認可小括號(),而不認可中括號[ ]或大括號{}等,在出現編譯錯誤時直接改正符號保證編譯過程順利完成。
2.進入【Visual Basic編輯器】將sub改為function
若用戶由于在定義函數過程中忘記將過程類型指定為“函數”而導致無法在“用戶定義”列表中找到已定義函數或根本無“用戶定義”類型,則用戶可以重新通過單擊【工具】,選擇下拉菜單【宏】項進入【Visual Basic編輯器】中,在名為“工程-VBAproject”窗口中找到錯誤函數所在模塊,雙擊后顯示過程編輯窗口,此時窗口中的語言為:Public Sub 最佳現金持有量(年現金需求量, 每次轉換成本, 有價證券收益率):
最佳現金持有量 = (2 * 年現金需求量 * 每次轉換成本 / 有價證券收益率) ^ 0.5
End Sub
用戶直接將上述函數名稱前的“Sub”手動改為“Function”,關閉該編程窗口返回Excel工作簿直接使用即可。不需要刪除錯誤的函數重新編寫。
3.將【宏】的安全性設置為“中”或“低”
用戶在使用自定義函數之前需要先檢查一下宏的安全性。方法為單擊【工具】菜單,選擇【宏】項,選擇【安全性】,將安全性設置為“中”或者“低”,以防止由于函數名稱前出現Excel工作簿名稱和模塊名稱字樣而導致函數不可用。需要注意的是宏的安全性設置完成后,關閉當前文件重新打開后生效。
4.檢查定義的函數名稱及參數是否與函數中定義的公式完全一致
如前所述,定義的函數名稱及參數與函數中定義的公式不完全一致時,將出現運算錯誤的情況。檢查方法是定義完成后現場檢查或發現錯誤后重新進入【Visual Basic編輯器】修改函數名稱或指定參數或修改公式,使兩者能夠完全一致。
5.刪除多余同名函數
在存在兩個或多個同名函數時,函數也無法正常使用。如果存在上述問題,則用戶需要在【Visual Basic編輯器】中的“工程-VBAproject”窗口中查找所有模塊,找到與所定義的函數名稱完全一致的其他定義,保留正確的函數所在模塊,將其他函數刪除或將其所在模塊移除。移除的方法是將鼠標指向要移除的模塊,單擊右鍵,選擇“移除模塊”,不保存即可。
主要參考文獻
[1]韓良智.EXCEL在財務管理與分析中的應用[M].北京:中國水利水電出版社,2004:100-101.
[2]財政部注冊會計師考試委員會辦公室.財務成本管理[M].北京:中國財政經濟出版社,2008.
[3]王化成.高級財務管理[M].第2版.北京:中國人民大學出版社,2005.