QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 1042|回复: 0
收起左侧

[分享] 创建自己的Excel函数

[复制链接]
发表于 2007-8-25 01:10:13 | 显示全部楼层 |阅读模式 来自: 中国内蒙古包头

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  Excel的强大函数功能,为我们带来了极大方便,虽然它有200多个函数,但有时我们为实现一项规定的功能,可能用到几个函数或者采用嵌套函数,这样应用起来,也不太方便。其实对于我们经常用到的功能,我们可以创建自定义函数UDF(User—defined function),它的运行与Excel中自带的函数完全相同。建立自定义函数有以下几个优点:建立自己特殊的功能和名称的函数;能将复杂的、嵌套的、多个原有的函数组合在一起,发挥更大的威力。+ ]- A0 P' i4 y' J3 }
  比如现在我们要根据收入来计算个人收入调节税,按照规定每月收入减去800元基础后,除去养老保险金、失业保险金、医疗保险金、住房公积金、工会费,对剩下的余额征收个税。余额在500元内的征收余额的5%,余额为500~2000元的征收余额的10%,余额为2000~5000元的征收余额的15%……征收个税的最高税率为45%(余额在10万元以上的)。如果用Excel的函数,则要进行多层if嵌套,稍有不注意,可能造成计算上差错,我们建立自己的函数来解决这个问题。
% B8 z. s4 s7 p% O2 F1 U  首先进入Excel,在[工具]→[宏]→[Visul Basic编辑器](也可按组合键[Alt+F11]),在“Visul Basic编辑器”中选择[插入]→[添加模块],在代码窗口输入下列函数:% i( b! T5 q7 u: L+ v. B9 x* F
# Z+ J% q  A. K& g8 ~) R. q
  一、添加自制函数& P. ~; _6 e5 o/ v
  Function tax(income As Single) As Single
7 a% M0 l5 A6 G6 h! s7 b; Y, |4 x# g  Select Case income1 _7 }5 s: `( U" w6 f8 H
  Case 0 To 800
! d; r' N( }, y. {4 {0 Z  tax = 0
$ G. T2 B, ]/ n1 x  Case 800.01 To 1300
/ [1 Z- e" ]( x% ?  tax = (income - 800) * 0.05. L5 f2 z; ?# U
  Case 1300.01 To 2800
+ @# x% b$ U9 T. Z5 c  D6 V2 e  tax = (income - 1300) * 0.1 + 25  _7 |3 \/ ]3 m
  Case 2800.01 To 5800
) m0 h; q3 ~6 J: q; H  tax = (income - 2800) * 0.15 + 175
  \) o; l' C; e. I# E+ I/ m  Case 5800.01 To 20800
; V" [, l( Q: ~. R" v. F  tax = (income - 5800) * 0.2 + 625
- x) H! I8 s- g6 R5 H  Case 20800.01 To 40800
* A, \% d  A9 G  tax = (income - 20800) * 0.25 + 3625/ h8 p* O% O  w. R& j
  Case 40800.01 To 60800
; ]# Q7 m% D7 P5 F5 R  tax = (income - 40800) * 0.3 + 8625. r2 F) f4 r/ C4 K; i9 k
  Case 60800.01 To 808006 [2 \( d( `6 d& R) a
  tax = (income - 60800) * 0.35 + 14625
6 l  F7 [/ s) t3 [5 u. ?# ]  Case 80800.01 To 100800( i. @: w" q  K! s) Q/ e7 o0 _# ]
  tax = (income - 80800) * 0.4 + 21625
% E$ `% t# [1 F, M( e$ ]  Case Is >= 100800
9 l. r$ T+ E' L  {  tax = (income - 100800) * 0.45 + 29625
" K9 P: B" h; z4 G6 A6 D8 V* K  Case Is < 0
! Q6 ]9 d7 W6 k* v6 d4 i& N6 ?! ?  MsgBox "你的工资 " && income && " 输入有误"
2 t2 a4 }5 z! m4 @( \  End Select
3 q0 o, H/ m, ^; n: O, @  End Function
, v. M0 j* w% W, [$ \6 U* S+ c8 X! b  我们知道,Excel中函数都有一个说明,帮助使用,我们也要给这个函数添加一个说明。在工具栏中选择“对象浏览器”(如图1),选择我们所做Tax模块,在其[右键]→[属性]中添加关于对这个函数的描述,这个描述将出现在Excel中关于函数的说明中,如果你要对软件保密的话,在“模块”上按右键,[VBAproject属性]→[保护中设置密码],嘿嘿!别人就看不到你的源程序了。5 y- f5 r- ]* T8 `
, a0 ^: I1 H8 O) P$ L! H1 J4 D
  二、使用自制函数
3 S% i3 c: Z& [+ l( f& _  这时,退出,回到Excel界面,将这个文件另存为:类型为“Microsoft Excel 加载宏”,在Excel 2000中,它会自动更改保存位置为c:\windows\application data\microsoft\addins(系统装在c:\windows),当然,你也可以把这个文件tax.xla,直接复制到office\library(office的安装路径下),而在Excel 97中只能放在后一个位置。使用函数很简单,点击[工具]→[加载宏],在你创建的Tax前打个勾,在单元格直接输入“=tax()”,是不是像Microsoft office提供的函数一样(如图2),很有点专业味道。. m' w( ~) e6 k+ Z( S% Z
9 h2 J- N- J3 [7 i1 l8 C) o1 H
  三、我的函数好像不够专业: N3 P6 X& c+ ]
  假如你把调用这个宏的Excel文件拷贝到别的机子上运行,会出现“当前所要打开的文档含有其他文档的链接,是否要使用其他工作簿中的改动更新当前工作簿”的提示,可以显示原先计算的数据,这是因为在Excel中的[工具]→[选项]→[重新计算]中,一般选中“保存外部链接数据”,但你不能重新计算,因为不能链接这个宏,别人机子上根本就没有这个函数。
5 Q8 i0 _% U; ]3 ?* _: E1 s7 y3 B! F( L7 @/ H% }' r% q; y3 u. f
  四、添加中文描述! l! s- V( n- W5 |2 E
  只不过在“加载宏”时,我自己创建的函数,是一个英文标题,而且下面也没有说明,你是不是觉得有点不够专业。跟我来,再教你一招,如果你使用的是Excel 2000时,找到tax.xla,点击[右键]→[属性]→[摘要] (如图4),在描述里添加所需内容来对函数进行相关描述,其中“标题”部分将出现在“加载宏”的方框中,“备注”部分将出现在下面的函数说明部分。这时再看看,够不够专业。在Excel 97中也可以在其右键属性中作相应更改。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表