《excel 学习要点.doc》由会员分享,可在线阅读,更多相关《excel 学习要点.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流1.2.3.4.5.6. excel 学习要点【精品文档】第 24 页7. 特殊符号的输入插入符号中查找8. 正确输入身份证号在单元格内加入上标的逗号或设置好文本格式在输入9. 自定输入数据下拉列表数据有效性设置选择序列来源中填入所需文字(以逗号分隔)10. 数据输入范围控制数据有效性出错警告进行自定义11. 自定义自动填充序列工具选项自定义序列直接添加,也可以导入12. 设置数据对齐方式选中数据运用快捷键,只能左右对齐(或单元格对齐)13. 单元格合并1、单元格的合并:同时选中需要合并的单元格(如A1:G1),然后按一下“格式”工具栏上的“合并及居中”
2、按钮即可。 2、撤销单元格的合并:选中合并后的单元格,然后再按一下“格式”工具栏上的“合并及居中”按钮即可。 注意:如果是Excel2000及以前的版本,撤销单元格的合并需要这样操作:选中合并后的单元格,执行“格式单元格”命令,打开“单元格格式”对话框,切换到“对齐”标签下,在“文本控制”选项下面,清除“合并单元格”前面复选框中的“”号,再确定返回即可。14. 字符格式设置Excel内置了大量的序列(星期、日期、序数等),我们可以通过下面两种方法来方便快捷地输入这些内置序列:1、选中A3、A4两个单元格,分别输入“序数”的前面两个数值(如1、2),然后同时选中这两个单元格,再将鼠标移到A4单元
3、格右下角成“细十字线”状时,按住鼠标左键向下拖拉至最后一个单元格,松开鼠标,即可快速输入相应序数。 注意:这种“细十字线”状态,我们通常称之为“填充柄”状态。 2、选中保存序列的第1个单元格(如B3),输入序列中某个元素(如“甲”等),然后用“填充柄”拖拉,即可地拖拉过的单元格区域中输入该序列。15. 中文日期格式默认情况下,在Excel中,我们输入的日期格式是“2005-1-16”,不太符合中国人的习惯。我们可以通过格式设置,将其设置为中文日期格式。 选中日期所在的单元格,执行“格式单元格”命令,打开“单元格格式”对话框,在“数值”标签中,选中“分类”下面的“日期”选项,然后在右侧的“类型”
4、下面选择一种合适的日期格式,确定返回即可。 注意:选中日期所在的单元格,右击鼠标,在随后弹出的快捷菜单中,选择“设置单元格格式”选项,也可以快速打开“单元格格式”对话框。 16. 列宽行高设置1、拖拉法:将鼠标移到行(列)标题的交界处,成双向拖拉箭头状时,按住左键向右(下)或向左(上)拖拉,即可调整行(列)宽(高)。 2、双击法:将鼠标移到行(列)标题的交界处,双击鼠标左键,即可快速将行(列)的行高(列宽)调整为“最合适的行高(列宽)”。是标准或称作理想格式位置 3、设置法:选中需要设置行高(列宽)的行(列),执行“格式行(列)行高(列宽)”命令,打开“行高(列宽)”对话框,输入一个合适的数值
5、,确定返回即可。17. 单元格的锁定及行列隐藏操作利用Excel中保护工作表的相应功能,就可以避免此类错误。思路如下:将表格中重要的使用公式和函数计算的单元格锁定,不允许修改,留下其他单元格进行基本数据的输入,这样就可以保护重要单元格中数据和公式的安全性和稳定性。18. 内置序列批量填充Excel内置了大量的序列(星期、日期、序数等),我们可以通过下面两种方法来方便快捷地输入这些内置序列:1、选中A3、A4两个单元格,分别输入“序数”的前面两个数值(如1、2),然后同时选中这两个单元格,再将鼠标移到A4单元格右下角成“细十字线”状时,按住鼠标左键向下拖拉至最后一个单元格,松开鼠标,即可快速输入
6、相应序数。 注意:这种“细十字线”状态,我们通常称之为“填充柄”状态。 2、选中保存序列的第1个单元格(如B3),输入序列中某个元素(如“甲”等),然后用“填充柄”拖拉,即可地拖拉过的单元格区域中输入该序列。13. 单元格的“批处理” (1)批量”调整列宽或行高。对于相邻的多列,在其列标号处用鼠标选中整列,并将鼠标移至选中区域内,单击右键弹出快捷菜单,进行多列的插入与删除操作;将鼠标移至选中区域内任何一列的列标号处,当鼠标变成十字形时,按下左键并拖动,则将选中所有列的宽度调成相同的尺寸。此时双击右键,则将选中的所有列的宽度调成最合适的尺寸,以和每列中输入最多内容的单元格相匹配。行的操作与上述列
7、的操作基本相同。对于不相邻的多列,先按下“Ctrl”键并配合鼠标左键单点或按下左键并拖动的操作,选中整列,并将鼠标移至选中的区域内任何一列的列标号处,当鼠标变成十字形时,按下左键并拖动,则将选中所有列的宽度调成相同尺寸,而此时双击右键,则将选中的所有列的宽度调成最合适的尺寸。行的操作与上述列的操作基本相同。(2)批量”设定格式通过按下“Ctrl键并配合鼠标左键单击或按下左键并拖动的操作选择不连续单元格,或者通过按下鼠标左键并拖动选择连续单元格,将鼠标移至选中的任何区域内,单击左键弹出快捷菜单,选择其中的“单元格格式”一项进行“批量”设定单元格格式,或者利用“格式”工具条上的图标进行格式设定。(
8、3)批量”输入众所周知,在相邻单元格中输入相同的内容可以通过复制来实现。对于不相邻单元格中输入相同的内容除通过复制粘贴来实现外,还可以采取如下快捷方法实现:先按下“Ctrl键并配合鼠标左键单点或按下左键并拖动的操作,选中所有要输入相同内容的单元格式,然后键入要输入内容,按下“Ctrl键之后按“Enter键,即可完成操作。(4)批量”求和在Excel上工作时,对数字求和是经常遇到的操作,除传统的输入求和公式并复制外, 对于连续区域求和可以采取如下方法:假定求和的连续区域为mn的矩阵型,并且此区域的右边一列和下面一行为空白,用鼠标将此区域选中并包含其右边一列或下面一行,也可以同时两者均选中,单击“
9、常用”工具条上的“”图标,则在选中区域的右边一列或下面一行自动生成了求和公式,并且系统能自动识别选中区域中的非数值型单元格,求和公式不会产生错误。(5)批量”替换有时候我们在一张工作表中要多次输入同一个文本,特别是要多次输入一些特殊符号(如),非常麻烦,对录入速度有较大的影响。这时我们可以用一次性替换的方法来克服这一缺陷:先在需要输入这些符号的单元格中输入一个代替的字母(如X。注意:不能是表格中需要的字母),等表格制作完成后,用编辑替换命令(或按Ctrl+H键),打开替换对话框(如图 4),在查找内容下面的方框中输入代替的字母X,在替换值下面的方框中输入,将单元格匹配前面的号去掉(否则会无法替
10、换),然后按替换按钮一个一个去替换(如果表格中确实需要字母x时,这样做就可达满足这要求。注意:此时鼠标最好选定在需要替换的单元格前面的单元格中,最好选定A1单元格。),也可以按全部替换按钮,一次性全部替换完毕(这样做表格中所有的x都被替换掉,且鼠标可以选定在任何单元格中)。(6)批量”增减行列我们在制作表格式通常需要添加或删除行列,先在自定义项目中找出快捷键,然后直接选中要添加或删除的单元格位置,或选中某一区域。14、数据筛选自动筛选“自动筛选”一般用于简单的条件筛选,筛选时将不满足条件的数据暂时隐藏起来,只显示符合条件的数据。我们通过下面的实例来进行讲解(如图1)。图1为某单位的职工工资表,
11、打开“数据”菜单中“筛选”子菜单中的“自动筛选”命令,以“基本工资”字段为例,单击其右侧向下的列表按钮,可根据要求筛选出基本工资为某一指定数额或筛选出基本工资最高(低)的前10个(该数值可调整)记录。我们还可以根据条件筛选出基本工资在某一范围内符合条件的记录,条件“与”表示两个条件同时要成立,条件“或”表示两个条件只要满足其中之一就可以了。图1如图2所示,可根据给定的条件筛选出基本工资大于等于300且小于350的记录。另外,使用“自动筛选”还可同时对多个字段进行筛选操作,此时各字段间限制的条件只能是“与”的关系。如筛选出“基本工资”和“职务工资”都超过380的记录。图2 高级筛选“高级筛选”一
12、般用于条件较复杂的筛选操作,其筛选的结果可显示在原数据表格中,不符合条件的记录被隐藏起来。也可以在新的位置显示筛选结果,不符合条件的记录同时保留在数据表中而不会被隐藏起来,这样就更加便于进行数据的对比了。图3例如我们要筛选出“基本工资”或“职务工资”超过380且“实发”工资超过700的符合条件的记录,用“自动筛选”就无能为力了,而“高级筛选”可方便地实现这一操作。如图3所示,将“基本工资”、“职务工资”和“实发”三字段的字段名称复制到数据表格的右侧(表格中其他空白位置也可以),在图中所示位置输入条件,条件放在同一行表示“与”的关系,条件不在同一行表示“或”的关系。图4即为上述操作在新的位置(B
13、20起始位置)筛选的结果。图4总结“自动筛选”一般用于条件简单的筛选操作,符合条件的记录显示在原来的数据表格中,操作起来比较简单,初学者对“自动筛选”也比较熟悉。若要筛选的多个条件间是“或”的关系,或需要将筛选的结果在新的位置显示出来,就只有用“高级筛选”来实现了。 一般情况下,“自动筛选”能完成的操作用“高级筛选”完全可以实现,但有的操作则不宜用“高级筛选”,这样反而会使问题更加复杂化了,如筛选最大或最小的前几项记录。菜鸟级Excel公式应用三、公式的简单应用实例 下面我们通过一些简单的实例,加强对公式的感性认识。 1. 计算商品金额数值 下图所示的工作表中的A2和B2单元格分别存放着某种商
14、品的“单价”和“数量”数值,为了计算“金额”数值,可以在D2单元格中输入公式“=250*8”(图 1),通过后面的学习我们会知道,像这样使用具体数值建立的公式,适应性很差,因此用得也很少。图1在D3单元格中输入公式“=A2*B2”,也可计算出“金额”数值(图 2),这个公式使用了引用,使得公式得适应性加强。关于在公式中使用引用的知识后面会详细介绍。图22. 计算销售额总和 下图所示的工作表中的B2和B11单元格分别存放10天的销售额,为了计算这些天的销售额总和,可以在D2单元格中输入公式“=B2+B3+B4+B5+B6+B7+B8+B9+B10+B11”(图 3),这个公式和数学中的求和公式没
15、什么两样,不过由于需要求和的项目太多,所以公式看起来比较长。图3为了简化公式,我们也可以在公式中使用函数实现同样的功能。 选中D3单元格,输入公式“=SUM(B2:B11)”,可以看到得出的计算结果是一样的(图 4),其中SUM为Excel的内置函数,功能为求出各项数值之和。图43. 用公式合并字符 下图所示的工作表中的A2和B2单元格分别存放着“姓”和“名”字符,为了得出“姓名”字符串,可以在D2单元格中输入公式“=A2&B2”(图 5),其中“&”是一个运算符号,我们称它为连接符号,它的功能为把两个文本字符或文本字符串连接起来。图5除了这种方法外,我们也可以使用函数达到同样的目的。选中D3
16、单元格,输入公式“=CONCATENATE(A2,B2)”,回车后得到的结果和前面的公式是一致的(图 6)。图6其中函数CONCATENATE的功能为将几个文本字符串合并为一个文本字符串。 通过上面的三个简单实例,大家对公式已经有了初步的了解。在实际工作中,公式可以解决问题非常多,它和函数结合在一起,极大的提升了Excel对数据的分析与处理能力。下面我们还将学习一些与公式相关的基础知识与技能,在最后的实际任务部分就可以利用它们一展身手了,后面的内容更加精彩,期待你的继续关注。Excel函数应用之数学和三角函数(陆元婕2001年05月23日 10:12)编者语:Excel是办公室自动化中非常重要
17、的一款软件,很多巨型国际企业都是依靠Excel进行数据管理。它不仅仅能够方便的处理表格和进行图形分析,其更强大的功能体现在对数据的自动处理和计算,然而很多缺少理工科背景或是对Excel强大数据处理功能不了解的人却难以进一步深入。编者以为,对Excel函数应用的不了解正是阻挡普通用户完全掌握Excel的拦路虎,然而目前这一部份内容的教学文章却又很少见,所以特别组织了这一个Excel函数应用系列,希望能够对Excel进阶者有所帮助。Excel函数应用系列,将每周更新,逐步系统的介绍Excel各类函数及其应用,敬请关注!学习Excel函数,我们还是从“数学与三角函数”开始。毕竟这是我们非常熟悉的函数
18、,这些正弦函数、余弦函数、取整函数等等从中学开始,就一直陪伴着我们。首先,让我们一起看看Excel提供了哪些数学和三角函数。笔者在这里以列表的形式列出Excel提供的所有数学和三角函数,详细请看附注的表格。从表中我们不难发现,Excel提供的数学和三角函数已基本囊括了我们通常所用得到的各种数学公式与三角函数。这些函数的详细用法,笔者不在这里一一赘述,下面从应用的角度为大家演示一下这些函数的使用方法。一、与求和有关的函数的应用SUM函数是Excel中使用最多的函数,利用它进行求和运算可以忽略存有文本、空格等数据的单元格,语法简单、使用方便。相信这也是大家最先学会使用的Excel函数之一。但是实际
19、上,Excel所提供的求和函数不仅仅只有SUM一种,还包括SUBTOTAL、SUM、SUMIF、SUMPRODUCT、SUMSQ、SUMX2MY2、SUMX2PY2、SUMXMY2几种函数。这里笔者将以某单位工资表为例重点介绍SUM(计算一组参数之和)、SUMIF(对满足某一条件的单元格区域求和)的使用。(说明:为力求简单,示例中忽略税金的计算。) 图1 函数求和SUM 1、行或列求和以最常见的工资表(如上图)为例,它的特点是需要对行或列内的若干单元格求和。比如,求该单位2001年5月的实际发放工资总额,就可以在H13中输入公式:=SUM(H3:H12)2、区域求和区域求和常用于对一张工作表中
20、的所有数据求总计。此时你可以让单元格指针停留在存放结果的单元格,然后在Excel编辑栏输入公式=SUM(),用鼠标在括号中间单击,最后拖过需要求和的所有单元格。若这些单元格是不连续的,可以按住Ctrl键分别拖过它们。对于需要减去的单元格,则可以按住Ctrl键逐个选中它们,然后用手工在公式引用的单元格前加上负号。当然你也可以用公式选项板完成上述工作,不过对于SUM函数来说手工还是来的快一些。比如,H13的公式还可以写成:=SUM(D3:D12,F3:F12)-SUM(G3:G12)3、注意SUM函数中的参数,即被求和的单元格或单元格区域不能超过30个。换句话说,SUM函数括号中出现的分隔符(逗号
21、)不能多于29个,否则Excel就会提示参数太多。对需要参与求和的某个常数,可用=SUM(单元格区域,常数)的形式直接引用,一般不必绝对引用存放该常数的单元格。SUMIFSUMIF函数可对满足某一条件的单元格区域求和,该条件可以是数值、文本或表达式,可以应用在人事、工资和成绩统计中。仍以上图为例,在工资表中需要分别计算各个科室的工资发放情况。 要计算销售部2001年5月加班费情况。则在F15种输入公式为=SUMIF($C$3:$C$12,销售部,$F$3:$F$12)其中$C$3:$C$12为提供逻辑判断依据的单元格区域,销售部为判断条件即只统计$C$3:$C$12区域中部门为销售部的单元格,
22、$F$3:$F$12为实际求和的单元格区域。 三、常见数学函数使用技巧-四舍五入在实际工作的数学运算中,特别是财务计算中常常遇到四舍五入的问题。虽然,excel的单元格格式中允许你定义小数位数,但是在实际操作中,我们发现,其实数字本身并没有真正的四舍五入,只是显示结果似乎四舍五入了。如果采用这种四舍五入方法的话,在财务运算中常常会出现几分钱的误差,而这是财务运算不允许的。那是否有简单可行的方法来进行真正的四舍五入呢?其实,Excel已经提供这方面的函数了,这就是ROUND函数,它可以返回某个数字按指定位数舍入后的数字。在Excel提供的数学与三角函数中提供了一个名为ROUND(number,n
23、um_digits)的函数,它的功能就是根据指定的位数,将数字四舍五入。这个函数有两个参数,分别是number和num_digits。其中number就是将要进行四舍五入的数字;num_digits则是希望得到的数字的小数点后的位数。如图3所示:单元格B2中为初始数据0.123456,B3的初始数据为0.234567,将要对它们进行四舍五入。在单元格C2中输入=ROUND(B2,2),小数点后保留两位有效数字,得到0.12、0.23。在单元格D2中输入=ROUND(B2,4),则小数点保留四位有效数字,得到0.1235、0.2346。 图3 对数字进行四舍五入对于数字进行四舍五入,还可以使用I
24、NT(取整函数),但由于这个函数的定义是返回实数舍入后的整数值。因此,用INT函数进行四舍五入还是需要一些技巧的,也就是要加上0.5,才能达到取整的目的。仍然以图3为例,如果采用INT函数,则C2公式应写成:=INT(B2*100+0.5)/100。最后需要说明的是:本文所有公式均在Excel97和Excel2000中验证通过,修改其中的单元格引用和逻辑条件值,可用于相似的其他场合。附注:Excel的数学和三角函数一览表ABS 工作表函数返回参数的绝对值ACOS 工作表函数返回数字的反余弦值ACOSH 工作表函数返回参数的反双曲余弦值ASIN 工作表函数返回参数的反正弦值ASINH 工作表函数
25、返回参数的反双曲正弦值ATAN 工作表函数返回参数的反正切值ATAN2 工作表函数返回给定的 X 及 Y 坐标值的反正切值ATANH 工作表函数返回参数的反双曲正切值CEILING 工作表函数将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数COMBIN 工作表函数计算从给定数目的对象集合中提取若干对象的组合数COS 工作表函数返回给定角度的余弦值COSH 工作表函数返回参数的双曲余弦值COUNTIF 工作表函数计算给定区域内满足特定条件的单元格的数目DEGREES 工作表函数将弧度转换为度EVEN 工作表函数返回沿绝对值增大方向取整后最接近的偶数EXP 工作表函数返回 e 的
26、 n 次幂常数 e 等于 2.71828182845904,是自然对数的底数FACT 工作表函数返回数的阶乘,一个数的阶乘等于 1*2*3*.*该数FACTDOUBLE 工作表函数返回参数 Number 的半阶乘FLOOR 工作表函数将参数 Number 沿绝对值减小的方向去尾舍入,使其等于最接近的 significance 的倍数GCD 工作表函数返回两个或多个整数的最大公约数INT 工作表函数返回实数舍入后的整数值LCM 工作表函数返回整数的最小公倍数LN 工作表函数返回一个数的自然对数自然对数以常数项 e(2.71828182845904)为底LOG 工作表函数按所指定的底数,返回一个数
27、的对数LOG10 工作表函数返回以 10 为底的对数MDETERM 工作表函数返回一个数组的矩阵行列式的值MINVERSE 工作表函数返回数组矩阵的逆距阵MMULT 工作表函数返回两数组的矩阵乘积结果MOD 工作表函数返回两数相除的余数结果的正负号与除数相同MROUND 工作表函数返回参数按指定基数舍入后的数值MULTINOMIAL 工作表函数返回参数和的阶乘与各参数阶乘乘积的比值ODD 工作表函数返回对指定数值进行舍入后的奇数PI 工作表函数返回数字 3.14159265358979,即数学常数 pi,精确到小数点后 15 位POWER 工作表函数返回给定数字的乘幂PRODUCT 工作表函数
28、将所有以参数形式给出的数字相乘,并返回乘积值QUOTIENT 工作表函数回商的整数部分,该函数可用于舍掉商的小数部分RADIANS 工作表函数将角度转换为弧度RAND 工作表函数返回大于等于 0 小于 1 的均匀分布随机数RANDBETWEEN 工作表函数返回位于两个指定数之间的一个随机数ROMAN 工作表函数将阿拉伯数字转换为文本形式的罗马数字ROUND 工作表函数返回某个数字按指定位数舍入后的数字ROUNDDOWN 工作表函数靠近零值,向下(绝对值减小的方向)舍入数字ROUNDUP 工作表函数远离零值,向上(绝对值增大的方向)舍入数字SERIESSUM 工作表函数返回基于以下公式的幂级数之
29、和:SIGN 工作表函数返回数字的符号当数字为正数时返回 1,为零时返回 0,为负数时返回 -1SIN 工作表函数返回给定角度的正弦值SINH 工作表函数返回某一数字的双曲正弦值SQRT 工作表函数返回正平方根SQRTPI 工作表函数返回某数与 pi 的乘积的平方根SUBTOTAL 工作表函数返回数据清单或数据库中的分类汇总SUM 工作表函数返回某一单元格区域中所有数字之和SUMIF 工作表函数根据指定条件对若干单元格求和SUMPRODUCT 工作表函数在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和SUMSQ 工作表函数返回所有参数的平方和SUMX2MY2 工作表函数返回两数组中对
30、应数值的平方差之和SUMX2PY2 工作表函数返回两数组中对应数值的平方和之和,平方和加总在统计计算中经常使用SUMXMY2 工作表函数返回两数组中对应数值之差的平方和TAN 工作表函数返回给定角度的正切值TANH 工作表函数返回某一数字的双曲正切值TRUNC 工作表函数将数字的小数部分截去,返回整数常用表格中出现的错误信息在利用Excel完成任务的过程中,公式被使用得非常多,正如前面所介绍的,公式能够解决各种各样的问题(参阅)。但是,这并不意味着公式的运用总会一帆风顺,如果我们运用函数和公式的时候稍微不仔细,公式就可能返回一些奇怪的错误代码,这可不是我们希望得到的结果。看到这些奇怪的错误代码
31、,有的朋友可能会手忙脚乱,甚至感到烦躁。其实,任何错误均有它内在的原因,下面我们就通过实例剖析,和大家探讨根据公式返回错误值的代码识别错误的类型和原因,以及相应的处理方法,帮助朋友们轻松地应对各种常见错误。文章末尾提供原文件供大家下载参考。 文章导读: 错误常见原因处理方法实例剖析 在公式中有除数为零,或者有除数为空白的单元格(Excel把空白单元格也当作0)。 把除数改为非零的数值,或者用IF函数进行控制。在公式使用查找功能的函数(VLOOKUP、HLOOKUP、LOOKUP等)时,找不到匹配的值。 检查被查找的值,使之的确存在于查找的数据表中的第一列。 在公式中使用了Excel无法识别的文
32、本,例如函数的名称拼写错误,使用了没有被定义的区域或单元格名称,引用文本时没有加引号等。 根据具体的公式,逐步分析出现该错误的可能,并加以改正。 当公式需要数字型参数时,我们却给了它一个非数字型参数;给了公式一个无效的参数;公式返回的值太大或者太小。 根据公式的具体情况,逐一分析可能的原因并修正。文本类型的数据参与了数值运算,函数参数的数值类型不正确;函数的参数本应该是单一值,却提供了一个区域作为参数;输入一个数组公式时,忘记按CtrlShiftEnter键。 更正相关的数据类型或参数类型;提供正确的参数;输入数组公式时,记得使用CtrlShiftEnter键确定。 公式中使用了无效的单元格引
33、用。通常如下这些操作会导致公式引用无效的单元格:删除了被公式引用的单元格;把公式复制到含有引用自身的单元格中。 避免导致引用无效的操作,如果已经出现错误,先撤销,然后用正确的方法操作。 使用了不正确的区域运算符或引用的单元格区域的交集为空。 改正区域运算符使之正确;更改引用使之相交。文中选用的实例都是平时出现最多的情况,请大家注意体会。文中图6提到的帮助更正错误的智能标记非常有用,如果利用介绍的方法都还未解决问题时,可以借助它进一步的分析。总之,只要思路正确、耐心仔细,Excel的公式错误最后就会被我们一一“歼灭Excel中自定义函数实例剖析一、认识VBA 在介绍自定义函数的具体使用之前,不得
34、不先介绍一下VBA,原因很简单,自定义函数就是用它创建的。VBA的全称是Visual Basic for Application,它是微软最好的通用应用程序脚本编程语言,它的特点是容易上手,而且功能非常强大。 在微软所有的Office组件中,如Word、Access、Powerpoint等等都包含VBA,如果你能在一种Office组件中熟练使用VBA,那么在其它组件中使用VBA的原理是相通的。 Excel中VBA主要有两个用途,一是使电子表格的任务自动化;二是可以用它创建用于工作表公式的自定义函数。 由此可见,使用Excel自定义函数的一个前提条件是对VBA基础知识有所了解,如果读者朋友有使用
35、Visual Basic编程语言的经验,那么使用VBA时会感觉有很多相似之处。如果读者朋友完全是一个新手,也不必太担心,因为实际的操作和运用是很简单的。 二、什么时候使用自定义函数? 有些初学Excel的朋友可能有这样疑问:Excel已经内置了这么多函数,我还有必要创建自己的函数吗? 回答是肯定的。原因有两个,它们也正好可以解释什么时候使用Excel自定义函数的问题。 第一,自定义函数可以简化我们的工作。 有些工作,我们的确可以在公式中组合使用Excel内置的函数来完成任务,但是这样做的一个明显缺点是,我们的公式可能太冗长、繁琐,可读性很差,不易于管理,除了自己之外别人可能很难理解。这时,我们
36、可以通过使用自定义函数来简化自己的工作。 第二,自定义函数可以满足我们个性化的需要,可以使我们的公式具有更强大和灵活的功能。 实际工作的要求千变万化,仅使用Excel内置函数常常不能圆满地解决问题,这时,我们就可以使用自定义函数来满足实际工作中的个性化需求。 上面的讲述比较抽象,我们还是把重点放在实际例子的剖析上,请大家在实际例子中进一步体会,进而学会在Excel中创建和使用自定义函数。三、自定义函数实例剖析 下面我们通过两个典型实例,学习自定义函数使用的全过程。这里实际上假设读者朋友都有一定的VBA基础。 假如你完全没有VBA基础也不要紧,当学习完实例后,若觉得自定义函数在自己以后的工作中可
37、能用到,那么再去补充相应的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=200
38、0,700*0.05+(B2-1500)*0.08,700*0.05+500*0.08+(B2-2000)*0.2)”,然后通过填充柄复制公式到C列的其余单元格。 既然公式能够解决问题,为什么还要使用自定义函数的方法呢? 正如前面提到的两个方面的原因:一是公式看起来太繁琐,不便于理解和管理;二是公式的处理能力在面对稍微复杂一些的问题时便失去效用,比如假设调节税的税率标准会根据年龄的不同而改变,那么公式可能就无能为力了。 使用自定义函数 下面就通过此例介绍使用自定义函数的全过程,即使是初学Excel的朋友,也会感觉其操作实际上是非常简单的。 1. 为了便于测试自定义函数的计算效果,可以先把上面采
39、用公式计算的结果删去。然后选择菜单“工具宏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 =
40、 1500 TAX = (salary - 800) * r1 Case Is 2000 TAX = (1500 - 800) * r1 + (2000 - 1500) * r2 + (salary - 2000) * r3 End Select End Function 图 23. 函数自定义完成后,选择菜单“文件关闭并返回到Microsoft Excel”命令,返回到Excel工作表窗口,在C2单元格中输入公式“=TAX(B2)”回车后就计算出了第一个员工应付的个人调节税,然后用公式填充柄复制公式到其它后面的单元格,这样就利用自定义函数完成了个人调节税的计算(图3)。 图 3 4. 从自定
41、义函数的代码中可以看出,用这种方式,自定义函数的功能非常易于理解,同时如果税率改变,相应地变化r1、r2、r3的值即可。 通常,自定义的函数只能在当前工作薄使用,如果该函数需要在其它工作薄中使用,则选择菜单“文件另存为”命令,打开“另存为”对话框,选择保存类型为“Mircosoft Excel加载宏”,然后输入一个文件名,如“TAX”单击“确定”后文件就被保存为加载宏(图4)。然后选择菜单“工具加载宏”命令,打开“加载宏”对话框,勾选“可用加载宏”列表框中的“Tax”复选框即可,单击“确定”按钮后(图5),就可以在本机上的所有工作薄中使用该自定义函数了。 图 4 图 5 如果想要在其它机器上使
42、用该自定义函数,只要把上面的加载宏文件复制到其它电脑上加载宏的默认保存位置即可。 说明:Windows XP系统下加载宏文件的默认保存位置为:C:Documents and Settingszunyue(用户帐户)Application DataMicrosoftAddIns文件夹。(二) 计算奖金的自定义函数 任务 为了促进销售人员的工作积极性,销售部门经理制定了销售业绩奖金制度,奖金发放的标准奖金率如下:月销售额小于等于2800元的奖金率为4,月销售额为2800元至7900元的奖金率为7,月销售额为7900元至15000元的奖金率为10,月销售额为15000元至30000元的奖金率为13,
43、月销售额为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%
44、,IF(B2=30000,B2*13%,IF(B2=50000,B2*16%,B2*19%)”可以进行计算。 但是,该公式的一些弊端很明显:一是公式看起来太繁琐、不容易理解,而且IF函数最多只能嵌套7层,万一奖金率超过7个,那么这个方法就无能为力了。 另一方面,由于没有考虑工龄,所以该方法不能算是解决问题了,如果我们把工龄融入到上述公式中,这样公式就会显得更加冗长繁琐,以后的管理与调整都很不方便。 使用自定义函数 下面我们看看利用Excel自定义函数进行计算的全过程,有了实例一的基础,相信大家理解起来更容易了。不过这里与实例一有一个明显的差别是,该自定义函数使用了2个参数,请大家注意体会。 1
45、. 在上述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 + year