會員登錄 - 用戶注冊 - 網(wǎng)站地圖 Office中國(office-cn.net),專業(yè)Office論壇
當(dāng)前位置:主頁 > 技巧 > Excel技巧 > 編程 > 正文

創(chuàng)建自己的EXCEL函數(shù)

時(shí)間:2005-02-11 09:29 來源:excelhome 作者:鄭如定 閱讀:

Excel的強(qiáng)大函數(shù)功能,為我們帶來了極大方便,雖然它有200多個(gè)函數(shù),但有時(shí)我們?yōu)閷?shí)現(xiàn)一項(xiàng)規(guī)定的功能,可能用到幾個(gè)函數(shù)或者采用嵌套函數(shù),這樣應(yīng)用起來,也不太方便。其實(shí)對于我們經(jīng)常用到的功能,我們可以創(chuàng)建自定義函數(shù)UDF(User—defined function),它的運(yùn)行與Excel中自帶的函數(shù)完全相同。建立自定義函數(shù)有以下幾個(gè)優(yōu)點(diǎn):建立自己特殊的功能和名稱的函數(shù);能將復(fù)雜的、嵌套的、多個(gè)原有的函數(shù)組合在一起,發(fā)揮更大的威力。

  比如現(xiàn)在我們要根據(jù)收入來計(jì)算個(gè)人收入調(diào)節(jié)稅,按照規(guī)定每月收入減去800元基礎(chǔ)后,除去養(yǎng)老保險(xiǎn)金、失業(yè)保險(xiǎn)金、醫(yī)療保險(xiǎn)金、住房公積金、工會費(fèi),對剩下的余額征收個(gè)稅。余額在500元內(nèi)的征收余額的5%,余額為500~2000元的征收余額的10%,余額為2000~5000元的征收余額的15%……征收個(gè)稅的最高稅率為45%(余額在10萬元以上的)。如果用Excel的函數(shù),則要進(jìn)行多層if嵌套,稍有不注意,可能造成計(jì)算上差錯(cuò),我們建立自己的函數(shù)來解決這個(gè)問題。

  首先進(jìn)入Excel,在[工具]→[宏]→[Visul Basic編輯器](也可按組合鍵[Alt+F11]),在“Visul Basic編輯器”中選擇[插入]→[添加模塊],在代碼窗口輸入下列函數(shù):


圖1添加自制函數(shù)說明

  Function tax(income As Single) As Single

  Select Case income

  Case 0 To 800

  tax = 0

  Case 800.01 To 1300

  tax = (income - 800) * 0.05

  Case 1300.01 To 2800

  tax = (income - 1300) * 0.1 + 25

  Case 2800.01 To 5800

  tax = (income - 2800) * 0.15 + 175

  Case 5800.01 To 20800

  tax = (income - 5800) * 0.2 + 625

  Case 20800.01 To 40800

  tax = (income - 20800) * 0.25 + 3625

  Case 40800.01 To 60800

  tax = (income - 40800) * 0.3 + 8625

  Case 60800.01 To 80800

  tax = (income - 60800) * 0.35 + 14625

  Case 80800.01 To 100800

  tax = (income - 80800) * 0.4 + 21625

  Case Is >= 100800

  tax = (income - 100800) * 0.45 + 29625

  Case Is < 0

  MsgBox "你的工資" && income && "輸入有誤"

  End Select

  End Function

  我們知道,Excel中函數(shù)都有一個(gè)說明,幫助使用,我們也要給這個(gè)函數(shù)添加一個(gè)說明。在工具欄中選擇“對象瀏覽器”(如圖1),選擇我們所做Tax模塊,在其[右鍵]→[屬性]中添加關(guān)于對這個(gè)函數(shù)的描述,這個(gè)描述將出現(xiàn)在Excel中關(guān)于函數(shù)的說明中,如果你要對軟件保密的話,在“模塊”上按右鍵,[VBAproject屬性]→[保護(hù)中設(shè)置密碼],嘿嘿!別人就看不到你的源程序了。


圖2使用自制函數(shù)

  這時(shí),退出,回到Excel界面,將這個(gè)文件另存為:類型為“Microsoft Excel加載宏”,在Excel 2000中,它會自動(dòng)更改保存位置為c:\windows\application data\microsoft\addins(系統(tǒng)裝在c:\windows),當(dāng)然,你也可以把這個(gè)文件tax.xla,直接復(fù)制到office\library(office的安裝路徑下),而在Excel 97中只能放在后一個(gè)位置。使用函數(shù)很簡單,點(diǎn)擊[工具]→[加載宏],在你創(chuàng)建的Tax前打個(gè)勾,在單元格直接輸入“=tax()”,是不是像Microsoft office提供的函數(shù)一樣(如圖2),很有點(diǎn)專業(yè)味道。


圖3我的函數(shù)好像不夠?qū)I(yè)

  假如你把調(diào)用這個(gè)宏的Excel文件拷貝到別的機(jī)子上運(yùn)行,會出現(xiàn)“當(dāng)前所要打開的文檔含有其他文檔的鏈接,是否要使用其他工作簿中的改動(dòng)更新當(dāng)前工作簿”的提示,可以顯示原先計(jì)算的數(shù)據(jù),這是因?yàn)樵贓xcel中的[工具]→[選項(xiàng)]→[重新計(jì)算]中,一般選中“保存外部鏈接數(shù)據(jù)”,但你不能重新計(jì)算,因?yàn)椴荒苕溄舆@個(gè)宏,別人機(jī)子上根本就沒有這個(gè)函數(shù)。


圖4添加中文描述

  只不過在“加載宏”時(shí),我自己創(chuàng)建的函數(shù),是一個(gè)英文標(biāo)題,而且下面也沒有說明(如圖3),你是不是覺得有點(diǎn)不夠?qū)I(yè)。跟我來,再教你一招,如果你使用的是Excel 2000時(shí),找到tax.xla,點(diǎn)擊[右鍵]→[屬性]→[摘要] (如圖4),在描述里添加所需內(nèi)容來對函數(shù)進(jìn)行相關(guān)描述,其中“標(biāo)題”部分將出現(xiàn)在“加載宏”的方框中,“備注”部分將出現(xiàn)在下面的函數(shù)說明部分。這時(shí)再看看,夠不夠?qū)I(yè)。在Excel 97中也可以在其右鍵屬性中作相應(yīng)更改。
  Case 2800.01 To 5800

  tax = (income - 2800) * 0.15 + 175

  Case 5800.01 To 20800

  tax = (income - 5800) * 0.2 + 625

  Case 20800.01 To 40800

  tax = (income - 20800) * 0.25 + 3625

  Case 40800.01 To 60800

  tax = (income - 40800) * 0.3 + 8625

  Case 60800.01 To 80800

  tax = (income - 60800) * 0.35 + 14625

  Case 80800.01 To 100800

  tax = (income - 80800) * 0.4 + 21625

  Case Is >= 100800

  tax = (income - 100800) * 0.45 + 29625

  Case Is < 0

  MsgBox "你的工資" & income & "輸入有誤"

  End Select

  End Function

  我們知道,Excel中函數(shù)都有一個(gè)說明,幫助使用,我們也要給這個(gè)函數(shù)添加一個(gè)說明。在工具欄中選擇“對象瀏覽器”(如圖1),選擇我們所做Tax模塊,在其[右鍵]→[屬性]中添加關(guān)于對這個(gè)函數(shù)的描述,這個(gè)描述將出現(xiàn)在Excel中關(guān)于函數(shù)的說明中,如果你要對軟件

(責(zé)任編輯:admin)

頂一下
(2)
100%
踩一下
(0)
0%
發(fā)表評論
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
評價(jià):