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