已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
excel中自定义函数实例剖析 稍有excel使用经验的朋友,都知道excel内置函数的快捷与方便,它大大增强了excel数据计算与分析的能力。不过内置的函数并不一定总是能满足我们的需求,这时,就可以通过定义自己的函数来解决问题。 一、认识vba 在介绍自定义函数的具体使用之前,不得不先介绍一下vba,原因很简单,自定义函数就是用它创建的。vba的全称是visual basic for application,它是微软最好的通用应用程序脚本编程语言,它的特点是容易上手,而且功能非常强大。 在微软所有的office组件中,如word、access、powerpoint等等都包含vba,如果你能在一种office组件中熟练使用vba,那么在其它组件中使用vba的原理是相通的。 excel中vba主要有两个用途,一是使电子表格的任务自动化;二是可以用它创建用于工作表公式的自定义函数。 由此可见,使用excel自定义函数的一个前提条件是对vba基础知识有所了解,如果读者朋友有使用visual basic编程语言的经验,那么使用vba时会感觉有很多相似之处。如果读者朋友完全是一个新手,也不必太担心,因为实际的操作和运用是很简单的。 二、什么时候使用自定义函数? 有些初学excel的朋友可能有这样疑问:excel已经内置了这么多函数,我还有必要创建自己的函数吗? 回答是肯定的。原因有两个,它们也正好可以解释什么时候使用excel自定义函数的问题。 第一,自定义函数可以简化我们的工作。 有些工作,我们的确可以在公式中组合使用excel内置的函数来完成任务,但是这样做的一个明显缺点是,我们的公式可能太冗长、繁琐,可读性很差,不易于管理,除了自己之外别人可能很难理解。这时,我们可以通过使用自定义函数来简化自己的工作。 第二,自定义函数可以满足我们个性化的需要,可以使我们的公式具有更强大和灵活的功能。 实际工作的要求千变万化,仅使用excel内置函数常常不能圆满地解决问题,这时,我们就可以使用自定义函数来满足实际工作中的个性化需求。 上面的讲述比较抽象,我们还是把重点放在实际例子的剖析上,请大家在实际例子中进一步体会,进而学会在excel中创建和使用自定义函数。三、自定义函数实例剖析 下面我们通过两个典型实例,学习自定义函数使用的全过程。这里实际上假设读者朋友都有一定的vba基础。 假如你完全没有vba基础也不要紧,当学习完实例后,若觉得自定义函数在自己以后的工作中可能用到,那么再去补充相应的vba基础也不迟。 (一) 计算个人调节税的自定义函数 任务 假设个人调节税的收缴标准是:工资小于等于800元的免征调节税,工资800元以上至1500元的超过部分按5的税率征收,1500元以上至2000元的超过部分按8的税率征收,高于2000元的超过部分按20的税率征收。 分析 假设sheet1工作表的a、b、c、d列中分别存放“姓名”、“总工资”、“调节税”、“税后工资”字段数据,如图1所示。 图 1 平时使用较多的方法是借助嵌套使用if函数计算,比如在c2单元格输入公式“=if(b2=800,0,if(b2=1500,(b2-800)*0.05,if(b2=2000,700*0.05+(b2-1500)*0.08,700*0.05+500*0.08+(b2-2000)*0.2)”,然后通过填充柄复制公式到c列的其余单元格。 既然公式能够解决问题,为什么还要使用自定义函数的方法呢? 正如前面提到的两个方面的原因:一是公式看起来太繁琐,不便于理解和管理;二是公式的处理能力在面对稍微复杂一些的问题时便失去效用,比如假设调节税的税率标准会根据年龄的不同而改变,那么公式可能就无能为力了。 使用自定义函数 下面就通过此例介绍使用自定义函数的全过程,即使是初学excel的朋友,也会感觉其操作实际上是非常简单的。 1. 为了便于测试自定义函数的计算效果,可以先把上面采用公式计算的结果删去。然后选择菜单“工具宏visual basic编辑器”命令(或按下键盘alt+f11组合键),打开visual basic窗口,我们将在这里自定义函数。 2. 进入visual basic窗口后,选择菜单“插入模块”命令,于是得到“模块1”,在其中输入如下自定义函数的代码(图2): function tax(salary) const r1 as double = 0.05 const r2 as double = 0.08 const r3 as double = 0.2 select case salary case is = 800 tax = 0 case is = 1500 tax = (salary - 800) * r1 case is 2000 tax = (1500 - 800) * r1 + (2000 - 1500) * r2 + (salary - 2000) * r3 end select end function 图 2 3. 函数自定义完成后,选择菜单“文件关闭并返回到microsoft excel”命令,返回到excel工作表窗口,在c2单元格中输入公式“=tax(b2)”回车后就计算出了第一个员工应付的个人调节税,然后用公式填充柄复制公式到其它后面的单元格,这样就利用自定义函数完成了个人调节税的计算(图3)。 图 3 4. 从自定义函数的代码中可以看出,用这种方式,自定义函数的功能非常易于理解,同时如果税率改变,相应地变化r1、r2、r3的值即可。 通常,自定义的函数只能在当前工作薄使用,如果该函数需要在其它工作薄中使用,则选择菜单“文件另存为”命令,打开“另存为”对话框,选择保存类型为“mircosoft excel加载宏”,然后输入一个文件名,如“tax”单击“确定”后文件就被保存为加载宏(图4)。然后选择菜单“工具加载宏”命令,打开“加载宏”对话框,勾选“可用加载宏”列表框中的“tax”复选框即可,单击“确定”按钮后(图5),就可以在本机上的所有工作薄中使用该自定义函数了。 图 4 图 5 如果想要在其它机器上使用该自定义函数,只要把上面的加载宏文件复制到其它电脑上加载宏的默认保存位置即可。 说明:windows xp系统下加载宏文件的默认保存位置为:c:documents and settingszunyue(用户帐户)application datamicrosoftaddins文件夹。(二) 计算奖金的自定义函数 任务 为了促进销售人员的工作积极性,销售部门经理制定了销售业绩奖金制度,奖金发放的标准奖金率如下:月销售额小于等于2800元的奖金率为4,月销售额为2800元至7900元的奖金率为7,月销售额为7900元至15000元的奖金率为10,月销售额为15000元至30000元的奖金率为13,月销售额为30000元至50000元的奖金率为16,月销售额大于50000元的奖金率为19。同时,为了鼓励员工持续地为公司工作,工龄越长对奖金越有利,具体规定为:参与计算的奖金率等于标准奖金率加上工龄一半的百分数。比如一个工龄为5年的员工,标准奖金率为7时,参与计算的奖金率则为9.5%=7%+(5/2)%。 分析 首先,我们在excel2003中制作好如图6的sheet1工作表,开始分析计算的方法。 图 6 如果不考虑工龄对奖金率的影响,那么可以利用嵌套使用if函数,在d2单元格输入公式“=if(b2=2800,b2*4%,if(b2=7900,b2*7%,if(b2=15000,b2*10%,if(b2=30000,b2*13%,if(b2=50000,b2*16%,b2*19%)”可以进行计算。 但是,该公式的一些弊端很明显:一是公式看起来太繁琐、不容易理解,而且if函数最多只能嵌套7层,万一奖金率超过7个,那么这个方法就无能为力了。 另一方面,由于没有考虑工龄,所以该方法不能算是解决问题了,如果我们把工龄融入到上述公式中,这样公式就会显得更加冗长繁琐,以后的管理与调整都很不方便。 使用自定义函数 下面我们看看利用excel自定义函数进行计算的全过程,有了实例一的基础,相信大家理解起来更容易了。不过这里与实例一有一个明显的差别是,该自定义函数使用了2个参数,请大家注意体会。 1. 在上述excel工作表中,选择菜单“工具宏visual basic编辑器”命令,打开visual basic窗口,然后选择菜单“插入模块”命令,插入一个名为“模块1”的模块。 2. 接着在模块编辑窗口中输入自定义函数的代码如下(图 7): function reward(sales, years) as double const r1 as double = 0.04 const r2 as double = 0.07 const r3 as double = 0.1 const r4 as double = 0.13 const r5 as double = 0.16 const r6 as double = 0.19 select case sales case is = 2800 reward = sales * (r1 + years / 200) case is = 7900 reward = sales * (r2 + years / 200) case is = 15000 reward = sales * (r3 + years / 200) case is = 30000 reward = sales * (r4 + years / 200) case is 50000 reward = sales * (r6 + years / 200) end select end function 图 7 3. 从代码可以看出,我们自定义了一个名为reward的函数,它包含两个参数:销售额sales和工龄years。常量r1至r6分别存放着各个等级的奖金率,这样处理的好处是当奖金率调整时,修改非常方便。同时,函数的层次结构比前面的公式清晰,让人容易理解函数的功能。此外,当奖金率超过7个时,用自定义函数的方法仍然可以轻松处理。 4. 接下来用该自定义函数进行具体的计算。选择菜单“文件关闭并返回到microsoft excel”命令,关闭visual basic窗口,返回excel工作表。选中d2单元格,在其中输入“=reward(b2,c2)”,回车后就算出了第一个员工的奖金,然后利用公式填充柄复制该公式到后面的单元格,即可完成对其它员工奖金的计算(图 8)。 图 8 如果该自定义函数需要在其它工作薄或其它机器上使用,仿照实例一的操作方法进行即可。 四、 总结 我们通过两个典型的实例讲述了excel中自定义函数使用的全过程,相信大家都已经会到,其操作过程还是相当简单的。 如果你觉得自己的工作可能需要自定义函数,想进一步学好提高使用自定义函数的水平,笔者想给出如下几点建议。 第一点、尽力全面熟练地掌握excel内置的函数。能用内置函数妥善解决的问题,就不必使用自定义函数。实际上,自定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年广东省深圳市南山区中考英语三模试卷
- 2 哪些领域对闪电定位仪的需求比较大
- 浙江省台州市台州十校联考2024-2025学年高一上学期期中考试生物试题含答案
- 人教版二年级上册美术教案
- 第三单元《珍爱我们的生命》-2024-2025学年七年级道德与法治上册单元测试卷(统编版2024新教材)
- 广东省珠海市第九中学2024-2025学年九年级上学期11月期中化学试题(含答案)
- 职业学院船舶工程技术专业人才培养方案
- 便携式遥控阻车器产业深度调研及未来发展现状趋势
- 手表自动上弦器产品供应链分析
- 医用人体成分分析仪产业运行及前景预测报告
- 上海市普陀区2024-2025学年八年级上学期期中物理练习卷
- 2024年消防知识竞赛考试题库500题(含答案)
- 北师大版八年级上册数学期中考试试卷带答案
- 地形图测绘报告
- 2024年公考时事政治知识点
- 2024中石油校园招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 医师定期考核(简易程序)练习及答案
- 中考数学计算题练习100道(2024年中考真题)
- 交通运输企业2023安全生产费用投入计划和实施方案
- 虚拟现实技术智慧树知到期末考试答案章节答案2024年山东女子学院
- 业主授权租户安装充电桩委托书
评论
0/150
提交评论