=if(b3<=60,“不及格”,if(b3<=70,“及格”,if(b3<90,“良好”,“优秀”))) 分为四个等级注意:符号为半角,IF与括弧之间不能有空格,而且最多嵌套7层。
Excel 函数使用大全(上)
2008-06-09 15:13:03| 分类: ▲07电脑/软件 | 标签: |字号大中小 订阅 Excel 函数使用大全(上)
一、与求和有关的函数的应用
SUM函数是Excel中使用最多的函数,利用它进行求和运算可以忽略存有文本、空格等数据的单元格,语法简单、使用方便。相信这也是大家最先学会使用的Excel函数之一。但是实际上,Excel所提供的求和函数不仅仅只有SUM一种,还包括SUBTOTAL、SUM、SUMIF、SUMPRODUCT、SUMSQ、SUMX2MY2、SUMX2PY2、SUMXMY2几种函数。
这里笔者将以某单位工资表为例重点介绍SUM(计算一组参数之和)、SUMIF(对满足某一条件的单元格区域求和)的使用。(说明:为力求简单,示例中忽略税金的计算。) 图1 函数求和 SUM
1、行或列求和
以最常见的工资表(如上图)为例,它的特点是需要对行或列内的若干单元格求和。 比如,求该单位2001年5月的实际发放工资总额,就可以在H13中输入公式: =SUM(H3:H12) 2、区域求和
区域求和常用于对一张工作表中的所有数据求总计。此时你可以让单元格指针停留在存放结果的单元格,然后在Excel编辑栏输入公式\"=SUM()\",用鼠标在括号中间单击,最后拖过需要求和的所有单元格。若这些单元格是不连续的,可以按住Ctrl键分别拖过它们。对于需要减去的单元格,则可以按住Ctrl键逐个选中它们,然后用手工在公式引用的单元格前加上负号。当然你也可以用公式选项板完成上述工作,不过对于SUM函数来说手工还是来的快一些。比如,H13的公式还可以写成:
=SUM(D3:D12,F3:F12)-SUM(G3:G12) 3、注意
SUM函数中的参数,即被求和的单元格或单元格区域不能超过30个。换句话说,SUM函数括号中出现的分隔符(逗号)不能多于29个,否则Excel就会提示参数太多。对需要参与求和的某个常数,可用\"=SUM(单元格区域,常数)\"的形式直接引用,一般不必绝对引用存放该常数的单元格。 SUMIF
SUMIF函数可对满足某一条件的单元格区域求和,该条件可以是数值、文本或表达式,可以应用在人事、工资和成绩统计中。
仍以上图为例,在工资表中需要分别计算各个科室的工资发放情况。 要计算销售部2001年5月加班费情况。则在F15种输入公式为
=SUMIF($C$3:$C$12,\"销售部\
其中\"$C$3:$C$12\"为提供逻辑判断依据的单元格区域,\"销售部\"为判断条件即只统计$C$3:$C$12区域中部门为\"销售部\"的单元格,$F$3:$F$12为实际求和的单元格区域。
二、与函数图像有关的函数应用
我想大家一定还记得我们在学中学数学时,常常需要画各种函数图像。那个时候是用坐标纸一点点描绘,常常因为计算的疏忽,描不出平滑的函数曲线。现在,我们已经知道Excel几乎囊括了我们需要的各种数学和三角函数,那是否可以利用Excel函数与Excel图表功能描绘函数图像呢?当然可以。
这里,笔者以正弦函数和余弦函数为例说明函数图像的描绘方法。
图2 函数图像绘制
1、录入数据--如图所示,首先在表中录入数据,自B1至N1的单元格以30度递增的方式录入从0至360的数字,共13个数字。
2、求函数值--在第2行和第三行分别输入SIN和COS函数,这里需要注意的是:由于SIN等三角函数在Excel的定义是要弧度值,因此必须先将角度值转为弧度值。具体公式写法为(以D2为例): =SIN(D1*PI()/180)
3、选择图像类型--首先选中制作函数图像所需要的表中数据,利用Excel工具栏上的图表向导按钮(也可利用\"插入\"/\"图表\"),在\"图表类型\"中选择\"XY散点图\",再在右侧的\"子图表类型\"中选择\"无数据点平滑线散点图\",单击[下一步],出现\"图表数据源\"窗口,不作任何操作,直接单击[下一步]。
4、图表选项操作--图表选项操作是制作函数曲线图的重要步骤,在\"图表选项\"窗口中进行(如图3),依次进行操作的项目有:
标题--为图表取标题,本例中取名为\"正弦和余弦函数图像\";为横轴和纵轴取标题。 坐标轴--可以不做任何操作;
网格线--可以做出类似坐标纸上网格,也可以取消网格线; 图例--本例选择图例放在图像右边,这个可随具体情况选择;
数据标志--本例未将数据标志在图像上,主要原因是影响美观。如果有特殊要求例外。5、完成图像--操作结束后单击[完成],一幅图像就插入Excel的工作区了。
6、编辑图像--图像生成后,字体、图像大小、位置都不一定合适。可选择相应的选项进行修改。所有这些操作可以先用鼠标选中相关部分,再单击右键弹出快捷菜单,通过快捷菜单中的有关项目即可进行操作。
至此,一幅正弦和余弦函数图像制作完成。用同样的方法,还可以制作二次曲线、对数图像等等。
三、常见数学函数使用技巧--四舍五入
在实际工作的数学运算中,特别是财务计算中常常遇到四舍五入的问题。虽然,excel的单元格格式中允许你定义小数位数,但是在实际操作中,我们发现,其实数字本身并没有真正的四舍五入,只是显示结果似乎四舍五入了。如果采用这种四舍五入方法的话,在财务运算中常常会出现几分钱的误差,而这是财务运算不允许的。那是否有简单可行的方法来进行真正的四舍五入呢?其实,Excel已经提供这方面的函数了,这就是ROUND函数,它可以返回某个数字按指定位数舍入后的数字。
在Excel提供的\"数学与三角函数\"中提供了一个名为ROUND(number,num_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 对数字进行四舍五入
对于数字进行四舍五入,还可以使用INT(取整函数),但由于这个函数的定义是返回实数舍入后的整数值。因此,用INT函数进行四舍五入还是需要一些技巧的,也就是要加上0.5,才能达到取整的目的。仍然以图3为例,如果采用INT函数,则C2公式应写成:\"=INT(B2*100+0.5)/100\"。 最后需要说明的是:本文所有公式均在Excel97和Excel2000中验证通过,修改其中的单元格引用和逻辑条件值,可用于相似的其他场合。 附注:Excel的数学和三角函数一览表 ABS 工作表函数 ACOS 工作表函数 ACOSH 工作表函数 ASIN 工作表函数 ASINH 工作表函数 ATAN 工作表函数 ATAN2 工作表函数 ATANH 工作表函数 CEILING 工作表函数 COMBIN 工作表函数 COS 工作表函数 COSH 工作表函数 COUNTIF 工作表函数 DEGREES 工作表函数 EVEN 工作表函数 EXP 工作表函数 FACT 工作表函数 返回参数的绝对值 返回数字的反余弦值 返回参数的反双曲余弦值 返回参数的反正弦值 返回参数的反双曲正弦值 返回参数的反正切值 返回给定的 X 及 Y 坐标值的反正切值 返回参数的反双曲正切值 将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数 计算从给定数目的对象集合中提取若干对象的组合数 返回给定角度的余弦值 返回参数的双曲余弦值 计算给定区域内满足特定条件的单元格的数目 将弧度转换为度 返回沿绝对值增大方向取整后最接近的偶数 返回 e 的 n 次幂常数 e 等于 2.71828182845904,是自然对数的底数 返回数的阶乘,一个数的阶乘等于 1*2*3*...*该数 将参数 Number 沿绝对值减小的方向去尾舍入,使其等于最接近的 significance 的倍数 返回两个或多个整数的最大公约数 返回实数舍入后的整数值 返回整数的最小公倍数 返回一个数的自然对数自然对数以常数项 e(2.71828182845904)为底 按所指定的底数,返回一个数的对数 返回以 10 为底的对数 返回一个数组的矩阵行列式的值 返回数组矩阵的逆距阵 返回两数组的矩阵乘积结果 返回两数相除的余数结果的正负号与除数相同 返回参数按指定基数舍入后的数值 返回参数和的阶乘与各参数阶乘乘积的比值 返回对指定数值进行舍入后的奇数 FACTDOUBLE 工作表函数 返回参数 Number 的半阶乘 FLOOR 工作表函数 GCD 工作表函数 INT 工作表函数 LCM 工作表函数 LN 工作表函数 LOG 工作表函数 LOG10 工作表函数 MDETERM 工作表函数 MINVERSE 工作表函数 MMULT 工作表函数 MOD 工作表函数 MROUND 工作表函数 MULTINOMIAL 工作表函数 ODD 工作表函数 PI 工作表函数 POWER 工作表函数 PRODUCT 工作表函数 QUOTIENT 工作表函数 RADIANS 工作表函数 RAND 工作表函数 RANDBETWEEN 工作表函数 ROMAN 工作表函数 ROUND 工作表函数 ROUNDUP 工作表函数 SERIESSUM 工作表函数 SIGN 工作表函数 SIN 工作表函数 SINH 工作表函数 SQRT 工作表函数 SQRTPI 工作表函数 SUBTOTAL 工作表函数 SUM 工作表函数 SUMIF 工作表函数 SUMSQ 工作表函数 SUMX2MY2 工作表函数 SUMX2PY2 工作表函数 SUMXMY2 工作表函数 TAN 工作表函数 TANH 工作表函数 TRUNC 工作表函数 返回数字 3.14159265358979,即数学常数 pi,精确到小数点后 15 位 返回给定数字的乘幂 将所有以参数形式给出的数字相乘,并返回乘积值 回商的整数部分,该函数可用于舍掉商的小数部分 将角度转换为弧度 返回大于等于 0 小于 1 的均匀分布随机数 返回位于两个指定数之间的一个随机数 将阿拉伯数字转换为文本形式的罗马数字 返回某个数字按指定位数舍入后的数字 远离零值,向上(绝对值增大的方向)舍入数字 返回基于以下公式的幂级数之和: 返回数字的符号当数字为正数时返回 1,为零时返回 0,为负数时返回 -1 返回给定角度的正弦值 返回某一数字的双曲正弦值 返回正平方根 返回某数与 pi 的乘积的平方根 返回数据清单或数据库中的分类汇总 返回某一单元格区域中所有数字之和 根据指定条件对若干单元格求和 返回所有参数的平方和 返回两数组中对应数值的平方差之和 返回两数组中对应数值的平方和之和,平方和加总在统计计算中经常使用 返回两数组中对应数值之差的平方和 返回给定角度的正切值 返回某一数字的双曲正切值 将数字的小数部分截去,返回整数 ROUNDDOWN 工作表函数 靠近零值,向下(绝对值减小的方向)舍入数字 SUMPRODUCT 工作表函数 在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和 用来判断真假值,或者进行复合检验的Excel函数,我们称为逻辑函数。在Excel中提供了六种逻辑函数。即AND、OR、NOT、FALSE、IF、TRUE函数。
一、AND、OR、NOT函数
这三个函数都用来返回参数逻辑值。详细介绍见下: (一)AND函数
所有参数的逻辑值为真时返回 TRUE;只要一个参数的逻辑值为假即返回 FALSE。简言之,就是当AND的参数全部满足某一条件时,返回结果为TRUE,否则为FALSE。
语法为AND(logical1,logical2, ...),其中Logical1, logical2, ... 表示待检测的 1 到 30 个条件值,各条件值可能为TRUE,可能为 FALSE。 参数必须是逻辑值,或者包含逻辑值的数组或引用。举例说明:
1、在B2单元格中输入数字50,在C2中写公式=AND(B2>30,B2<60)。由于B2等于50的确大于30、小于60。所以两个条件值(logical)均为真,则返回结果为TRUE。 图1 AND函数示例1
2、如果 B1-B3 单元格中的值为 TRUE、FALSE、TRUE,显然三个参数并不都为真,所以在B4单元格中的公式=AND(B1:B3) 等于 FALSE 图2 AND函数示例2 (二)OR函数
OR函数指在其参数组中,任何一个参数逻辑值为 TRUE,即返回 TRUE。它与AND函数的区别在于,AND函数要求所有函数逻辑值均为真,结果方为真。而OR函数仅需其中任何一个为真即可为真。比如,上面的示例2,如果在B4单元格中的公式写为=OR(B1:B3)则结果等于TRUE 图3 OR函数示例 (三)NOT函数
NOT函数用于对参数值求反。当要确保一个值不等于某一特定值时,可以使用 NOT 函数。简言之,就是当参数值为TRUE时,NOT函数返回的结果恰与之相反,结果为FALSE.
比如NOT(2+2=4),由于2+2的结果的确为4,该参数结果为TRUE,由于是NOT函数,因此返回函数结果与之相反,为FALSE。
二、TRUE、FALSE函数
TRUE、FALSE函数用来返回参数的逻辑值,由于可以直接在单元格或公式中键入值TRUE或者FALSE。因此这两个函数通常可以不使用。
三、IF函数 (一)IF函数说明
IF函数用于执行真假值判断后,根据逻辑测试的真假值返回不同的结果,因此If函数也称之为条件函数。它的应用很广泛,可以使用函数 IF 对数值和公式进行条件检测。
它的语法为IF(logical_test,value_if_true,value_if_false)。其中Logical_test表示计算结果为 TRUE 或 FALSE 的任意值或表达式。本参数可使用任何比较运算符。
Value_if_true显示在logical_test 为 TRUE 时返回的值,Value_if_true 也可以是其他公式。Value_if_false logical_test 为 FALSE 时返回的值。Value_if_false 也可以是其他公式。 简言之,如果第一个参数logical_test返回的结果为真的话,则执行第二个参数Value_if_true的结果,否则执行第三个参数Value_if_false的结果。IF函数可以嵌套七层,用 value_if_false 及 value_if_true 参数可以构造复杂的检测条件。
Excel 还提供了可根据某一条件来分析数据的其他函数。例如,如果要计算单元格区域中某个文本串或数字出现的次数,则可使用 COUNTIF 工作表函数。如果要根据单元格区域中的某一文本串或数字求和,则可使用 SUMIF 工作表函数。 (二)IF函数应用
1、 输出带有公式的空白表单 图5 人事分析表1
以图中所示的人事状况分析表为例,由于各部门关于人员的组成情况的数据尚未填写,在总计栏(以单元格G5为例)公式为:=SUM(C5:F5)
我们看到计算为0的结果。如果这样的表格打印出来就页面的美观来看显示是不令人满意的。是否有办法去掉总计栏中的0呢?你可能会说,不写公式不就行了。当然这是一个办法,但是,如果我们利用了IF函数的话,也可以在写公式的情况下,同样不显示这些0。如何实现呢?只需将总计栏中的公式(仅以单元格G5为例)改写成:=IF(SUM(C5:F5),SUM(C5:F5),\"\")
通俗的解释就是:如果SUM(C5:F5)不等于零,则在单元格中显示SUM(C5:F5)的结果,否则显示字符串。 几点说明:
(1) SUM(C5:F5)不等于零的正规写法是SUM(C5:F5)<>0,在EXCEL中可以省略<>0; (2) \"\"表示字符串的内容为空,因此执行的结果是在单元格中不显示任何字符。 图4 2、 不同的条件返回不同的结果
如果对上述例子有了很好的理解后,我们就很容易将IF函数应用到更广泛的领域。比如,在成绩表中根据不同的成绩区分合格与不合格。现在我们就以某班级的英语成绩为例具体说明用法。 图6
某班级的成绩如图6所示,为了做出最终的综合评定,我们设定按照平均分判断该学生成绩是否合格的规则。如果各科平均分超过60分则认为是合格的,否则记作不合格。
根据这一规则,我们在综合评定中写公式(以单元格B12为例):=IF(B11>60,\"合格\不合格\")
语法解释为,如果单元格B11的值大于60,则执行第二个参数即在单元格B12中显示合格字样,否则执行第三个参数即在单元格B12中显示不合格字样。
在综合评定栏中可以看到由于C列的同学各科平均分为54分,综合评定为不合格。其余均为合格。
3、 多层嵌套函数的应用
在上述的例子中,我们只是将成绩简单区分为合格与不合格,在实际应用中,成绩通常是有多个等级的,比如优、良、中、及格、不及格等。有办法一次性区分吗?可以使用多层嵌套的办法来实现。仍以上例为例,我们设定综合评定的规则为当各科平均分超过90时,评定为优秀。如图7所示。 图7
说明:为了解释起来比较方便,我们在这里仅做两重嵌套的示例,您可以按照实际情况进行更多重的嵌套,但请注意Excel的IF函数最多允许七重嵌套。 根据这一规则,我们在综合评定中写公式(以单元格F12为例): =IF(F11>60,IF(AND(F11>90),\"优秀\合格\"),\"不合格\")
语法解释为,如果单元格F11的值大于60,则执行第二个参数,在这里为嵌套函数,继续判断单元格F11的值是否大于90(为了让大家体会一下AND函数的应用,写成AND(F11>90),实际上可以仅写F11>90),如果满足在单元格F12中显示优秀字样,不满足显示合格字样,如果F11的值以上条件都不满足,则执行第三个参数即在单元格F12中显示不合格字样。 在综合评定栏中可以看到由于F列的同学各科平均分为92分,综合评定为优秀。 (三)根据条件计算值
在了解了IF函数的使用方法后,我们再来看看与之类似的Excel提供的可根据某一条件来分析数据的其他函数。例如,如果要计算单元格区域中某个文本串或数字出现的次数,则可使用 COUNTIF 工作表函数。如果要根据单元格区域中的某一文本串或数字求和,则可使用 SUMIF 工作表函数。关于SUMIF函数在数学与三角函数中以做了较为详细的介绍。这里重点介绍COUNTIF的应用。
COUNTIF可以用来计算给定区域内满足特定条件的单元格的数目。比如在成绩表中计算每位学生取得优秀成绩的课程数。在工资表中求出所有基本工资在2000元以上的员工数。
语法形式为COUNTIF(range,criteria)。其中Range为需要计算其中满足条件的单元格数目的单元格区域。Criteria确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式或文本。例如,条件可以表示为 32、\"32\"、\">32\"、\"apples\"。 1、成绩表
这里仍以上述成绩表的例子说明一些应用方法。我们需要计算的是:每位学生取得优秀成绩的课程数。规则为成绩大于90分记做优秀。如图8所示 图8
根据这一规则,我们在优秀门数中写公式(以单元格B13为例): =COUNTIF(B4:B10,\">90\")
语法解释为,计算B4到B10这个范围,即jarry的各科成绩中有多少个数值大于90的单元格。 在优秀门数栏中可以看到jarry的优秀门数为两门。其他人也可以依次看到。
2、 销售业绩表
销售业绩表可能是综合运用IF、SUMIF、COUNTIF非常典型的示例。比如,可能希望计算销售人员的订单数,然后汇总每个销售人员的销售额,并且根据总发货量决定每次销售应获得的奖金。 原始数据表如图9所示(原始数据是以流水单形式列出的,即按订单号排列)
图9 原始数据表
按销售人员汇总表如图10所示
图10 销售人员汇总表
如图10所示的表完全是利用函数计算的方法自动汇总的数据。首先建立一个按照销售人员汇总的表单样式,如图所示。然后分别计算订单数、订单总额、销售奖金。 (1) 订单数 --用COUNTIF计算销售人员的订单数。
以销售人员ANNIE的订单数公式为例。公式:=COUNTIF($C$2:$C$13,A17)
语法解释为计算单元格A17(即销售人员ANNIE)在\"销售人员\"清单$C$2:$C$13的范围内(即图9所示的原始数据表)出现的次数。
这个出现的次数即可认为是该销售人员ANNIE的订单数。 (2) 订单总额--用SUMIF汇总每个销售人员的销售额。
以销售人员ANNIE的订单总额公式为例。公式:=SUMIF($C$2:$C$13,A17,$B$2:$B$13) 此公式在\"销售人员\"清单$C$2:$C$13中检查单元格A17 中的文本(即销售人员ANNIE),然后计算\"订单金额\"列($B$2:$B$13)中相应量的和。 这个相应量的和就是销售人员ANNIE的订单总额。
(3) 销售奖金--用IF根据订单总额决定每次销售应获得的奖金。
假定公司的销售奖金规则为当订单总额超过5万元时,奖励幅度为百分之十五,否则为百分之十。根据这一规则仍以销售人员ANNIE为例说明。公式为:=IF(C17<50000,10%,15%)*C17 如果订单总额小于 50000则奖金为 10%;如果订单总额大于等于 50000,则奖金为 15%。 至此,我们已完全了解了EXCEL函数的逻辑函数,相信大家在实际工作中会想出更多更有用的运用。
所谓文本函数,就是可以在公式中处理文字串的函数。例如,可以改变大小写或确定文字串的长度;可以替换某些字符或者去除某些字符等。而日期和时间函数则可以在公式中分析和处理日期值和时间值。关于这两类函数的列表参看附表,这里仅对一些常用的函数做简要介绍。
一、文本函数 (一)大小写转换
LOWER--将一个文字串中的所有大写字母转换为小写字母。 UPPER--将文本转换成大写形式。
PROPER--将文字串的首字母及任何非字母字符之后的首字母转换成大写。将其余的字母转换成小写。
这三种函数的基本语法形式均为 函数名(text)。示例说明:
已有字符串为:pLease ComE Here! 可以看到由于输入的不规范,这句话大小写乱用了。 通过以上三个函数可以将文本转换显示样式,使得文本变得规范。参见图1 Lower(pLease ComE Here!)= please come here!
upper(pLease ComE Here!)= PLEASE COME HERE! proper(pLease ComE Here!)= Please Come Here!
图1
(二)取出字符串中的部分字符
您可以使用Mid、Left、Right等函数从长字符串内获取一部分字符。具体语法格式为
LEFT函数:LEFT(text,num_chars)其中Text是包含要提取字符的文本串。Num_chars指定要由 LEFT 所提取的字符数。
MID函数:MID(text,start_num,num_chars)其中Text是包含要提取字符的文本串。Start_num是文本中要提取的第一个字符的位置。
RIGHT函数:RIGHT(text,num_chars)其中Text是包含要提取字符的文本串。Num_chars指定希望 RIGHT 提取的字符数。
比如,从字符串\"This is an apple.\"分别取出字符\"This\"、\"apple\"、\"is\"的具体函数写法为。 LEFT(\"This is an apple\RIGHT(\"This is an apple\MID(\"This is an apple\
图2
(三)去除字符串的空白
在字符串形态中,空白也是一个有效的字符,但是如果字符串中出现空白字符时,容易在判断或对比数据是发生错误,在Excel中您可以使用Trim函数清除字符串中的空白。 语法形式为:TRIM(text)其中Text为需要清除其中空格的文本。
需要注意的是,Trim函数不会清除单词之间的单个空格,如果连这部分空格都需清除的话,建议使用替换功能。比如,从字符串\"My name is Mary\"中清除空格的函数写法为:TRIM(\"My name is Mary\")=My name is Mary 参见图3
图3
(四)字符串的比较
在数据表中经常会比对不同的字符串,此时您可以使用EXACT函数来比较两个字符串是否相同。该函数测试两个字符串是否完全相同。如果它们完全相同,则返回 TRUE;否则,返回 FALSE。函数 EXACT 能区分大小写,但忽略格式上的差异。利用函数 EXACT 可以测试输入文档内的文字。语法形式为:EXACT(text1,text2)Text1为待比较的第一个字符串。Text2为待比较的第二个字符串。举例说明:参见图4 EXACT(\"China\
图4
二、日期与时间函数
在数据表的处理过程中,日期与时间的函数是相当重要的处理依据。而Excel在这方面也提供了相当丰富的函数供大家使用。 (一)取出当前系统时间/日期信息
用于取出当前系统时间/日期信息的函数主要有NOW、TODAY。 语法形式均为 函数名()。
(二)取得日期/时间的部分字段值
如果需要单独的年份、月份、日数或小时的数据时,可以使用HOUR、DAY、MONTH、YEAR函数直接从日期/时间中取出需要的数据。具体示例参看图5。
比如,需要返回2001-5-30 12:30 PM的年份、月份、日数及小时数,可以分别采用相应函数实现。
YEAR(E5)=2001 MONTH(E5)=5 DAY(E5)=30 HOUR(E5)=12
图5
此外还有更多有用的日期/时间函数,可以查阅附表。下面我们将以一个具体的示例来说明Excel的文本函数与日期函数的用途。
三、示例:做一个美观简洁的人事资料分析表 1、 示例说明
在如图6所示的某公司人事资料表中,除了编号、员工姓名、身份证号码以及参加工作时间为手工添入外,其余各项均为用函数计算所得。
图6
在此例中我们将详细说明如何通过函数求出: (1)自动从身份证号码中提取出生年月、性别信息。 (2)自动从参加工作时间中提取工龄信息。 2、身份证号码相关知识
在了解如何实现自动从身份证号码中提取出生年月、性别信息之前,首先需要了解身份证号码所代表的含义。我们知道,当今的身份证号码有15/18位之分。早期签发的身份证号码是15位的,现在签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,就成了18位。这两种身份证号码将在相当长的一段时期内共存。两种身份证号码的含义如下:
(1)15位的身份证号码:1~6位为地区代码,7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期,第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。 (2)18位的身份证号码:1~6位为地区代码,7~10位为出生年份(4位),11~12位为出生月份,13~14位为出生日期,第15~17位为顺序号,并能够判断性别,奇数为男,偶数为女。18位为效验位。
3、 应用函数
在此例中为了实现数据的自动提取,应用了如下几个Excel函数。
(1)IF函数:根据逻辑表达式测试的结果,返回相应的值。IF函数允许嵌套。 语法形式为:IF(logical_test, value_if_true,value_if_false) (2)CONCATENATE:将若干个文字项合并至一个文字项中。 语法形式为:CONCATENATE(text1,text2……)
(3)MID:从文本字符串中指定的起始位置起,返回指定长度的字符。 语法形式为:MID(text,start_num,num_chars) (4)TODAY:返回计算机系统内部的当前日期。 语法形式为:TODAY()
(5)DATEDIF:计算两个日期之间的天数、月数或年数。 语法形式为:DATEDIF(start_date,end_date,unit) (6)VALUE:将代表数字的文字串转换成数字。 语法形式为:VALUE(text)
(7)RIGHT:根据所指定的字符数返回文本串中最后一个或多个字符。 语法形式为:RIGHT(text,num_chars)
(8)INT:返回实数舍入后的整数值。语法形式为:INT(number) 4、 公式写法及解释(以员工Andy为例说明)
说明:为避免公式中过多的嵌套,这里的身份证号码限定为15位的。如果您看懂了公式的话,可以进行简单的修改即可适用于18位的身份证号码,甚至可适用于15、18两者并存的情况。 (1)根据身份证号码求性别
=IF(VALUE(RIGHT(E4,3))/2=INT(VALUE(RIGHT(E4,3))/2),\"女\男\")
公式解释:a. RIGHT(E4,3)用于求出身份证号码中代表性别的数字,实际求得的为代表数字的字符串
b. VALUE(RIGHT(E4,3)用于将上一步所得的代表数字的字符串转换为数字
c. VALUE(RIGHT(E4,3))/2=INT(VALUE(RIGHT(E4,3))/2用于判断这个身份证号码是奇数还是偶数,当然你也可以用Mod函数来做出判断。
d. =IF(VALUE(RIGHT(E4,3))/2=INT(VALUE(RIGHT(E4,3))/2),\"女\男\")及如果上述公式判断出这个号码是偶数时,显示\"女\",否则,这个号码是奇数的话,则返回\"男\"。
(2)根据身份证号码求出生日期
=CONCATENATE(\"19\公式解释:a. MID(E4,7,2)为在身份证号码中获取表示年份的数字的字符串 b. MID(E4,9,2) 为在身份证号码中获取表示月份的数字的字符串 c. MID(E4,11,2) 为在身份证号码中获取表示日期的数字的字符串
d. CONCATENATE(\"19\目的就是将多个字符串合并在一起显示。
(3)根据参加工作时间求年资(即工龄)
=CONCATENATE(DATEDIF(F4,TODAY(),\"y\"),\"年\个月\") 公式解释:
a. TODAY()用于求出系统当前的时间
b. DATEDIF(F4,TODAY(),\"y\")用于计算当前系统时间与参加工作时间相差的年份
c. DATEDIF(F4,TODAY(),\"ym\")用于计算当前系统时间与参加工作时间相差的月份,忽略日期中的日和年。
d. =CONCATENATE(DATEDIF(F4,TODAY(),\"y\"),\"年\个月\")目的就是将多个字符串合并在一起显示。 5. 其他说明
在这张人事资料表中我们还发现,创建日期:31-05-2001时显示在同一个单元格中的。这是如何实现的呢?难道是手工添加的吗?不是,实际上这个日期还是变化的,它显示的是系统当前时间。这里是利用函数 TODAY 和函数 TEXT 一起来创建一条信息,该信息包含着当前日期并将日期以\"dd-mm-yyyy\"的格式表示。
具体公式写法为:=\"创建日期:\"&TEXT(TODAY(),\"dd-mm-yyyy\")
至此,我们对于文本函数、日期与时间函数已经有了大致的了解,同时也设想了一些应用领域。
相信随着大家在这方面的不断研究,会有更广泛的应用。 附一:文本函数
函数名 函数说明 语法 ASC 将字符串中的全角(双字节)英文字母更改为半角(单字节)字符。 ASC(text) 返回对应于数字代码的字符,函数 CHAR CHAR 可将其他类型计算机文件中的代CHAR(number) 码转换为字符。 删除文本中不能打印的字符。对从其他应用程序中输入的字符串使用 CLEAN CLEAN 函数,将删除其中含有的当前操作系统无法打印的字符。例如,可以删除通常CLEAN(text) 出现在数据文件头部或尾部、无法打印的低级计算机代码。 返回文字串中第一个字符的数字代码。CODE 返回的代码对应于计算机当前使用的字CODE(text) 符集。 CONCATENATE 将若干文字串合并到一个文字串中。 CONCATENATE (text1,text2,...) DOLLAR 依照货币格式将小数四舍五入到指定的位数并转换成文字。 DOLLAR 或 RMB(number,decimals)该函数测试两个字符串是否完全相同。如果它们完全相同,则返回 TRUE;否EXACT 则,返回 FALSE。函数 EXACT 能区分大小写,但忽略格式上的差异。利用EXACT(text1,text2) 函数 EXACT 可以测试输入文档内的文字。 FIND 用于查找其他文本串 FIND (within_text) 内的文本串 (find_text),并从 within_text 的首字符开始返回 FIND(find_text,within_text,start_num) find_text 的起始位置编号。 按指定的小数位数进行四舍五入,利用FIXED 句点和逗号,以小数格式对该数设置格FIXED(number,decimals,no_commas) 式,并以文字串形式返回结果。 JIS 将字符串中的半角(单字节)英文字母或片假名更改为全角(双字节)字符。 JIS(text) LEFT 基于所指定的字符数返回文本串中的第一个或前几个字符。 LEFT LEFTB 基于所指定的字节数返回文本LEFT(text,num_chars) 串中的第一个或前几个字符。此函数用LEFTB(text,num_bytes) 于双字节字符。 LEN LEN 返回文本串中的字符数。 LEN(text) LENB 返回文本串中用于代表字符的字LENB(text) 节数。此函数用于双字节字符。 LOWER 将一个文字串中的所有大写字母转换为小写字母。 MID 返回文本串中从指定位置开始的特定数目的字符,该数目由用户指定。 MID MIDB 返回文本串中从指定位置开始的特定数目的字符,该数目由用户指定。此函数用于双字节字符。 PHONETIC PROPER 提取文本串中的拼音 (furigana) 字符。 PHONETIC(reference) 将文字串的首字母及任何非字母字符之后的首字母转换成大写。将其余的字母PROPER(text) 转换成小写。 REPLACE 使用其他文本串并根据所指定的字符数替换某文本串中的部分文REPLACE 本。 REPLACEB 使用其他文本串并根据所指定的字符数替换某文本串中的部分文本。此函数专为双字节字符使用。 按照给定的次数重复显示文本。可以通REPT 过函数 REPT 来不断地重复显示某一文字串,对单元格进行填充。 RIGHT 根据所指定的字符数返回文本串中最后一个或多个字符。 RIGHT RIGHTB 根据所指定的字符数返回文本串中最后一个或多个字符。此函数用于双字节字符。 SEARCH 返回从 start_num 开始首次找到特定字符或文本串的位置上特定字符的编号。使用 SEARCH 可确定字符或文本串在其他文本串中的位置,这样就可使用 MID 或 REPLACE 函数更改文本。 SEARCH SEARCHB 也可在其他文本串 (within_text) 中查找文本串 (find_text),并返回 find_text 的起始位置编号。此结果是基于每个字符所使用的字节数,并从 start_num 开始的。此函数用于双字节字符。此外,也可使用 FINDB 在其他文本串中查找文本串。 在文字串中用 new_text 替代 old_text。SUBSTITUTE 如果需要在某一文字串中替换指定的文本,请使用函数 SUBSTITUTE;如果需要在某一文字串中替换指定位置处的任SUBSTITUTE(text,old_text,new_text,instance_num) SEARCH(find_text,within_text,start_num) SEARCHB(find_text,within_text,start_num) RIGHT(text,num_chars) RIGHTB(text,num_bytes) REPT(text,number_times) REPLACE(old_text,start_num,num_chars,new_text) REPLACEB(old_text,start_num,num_bytes,new_text) MID(text,start_num,num_chars) MIDB(text,start_num,num_bytes) LOWER(text) 意文本,请使用函数 REPLACE。 T TEXT 将数值转换成文本。 将一数值转换为按指定数字格式表示的文本。 除了单词之间的单个空格外,清除文本TRIM 中所有的空格。在从其他应用程序中获取带有不规则空格的文本时,可以使用函数 TRIM。 UPPER VALUE WIDECHAR YEN
附二、日期与时间函数
函数名 DATE DATEDIF 函数说明 语法 将文本转换成大写形式。 将代表数字的文字串转换成数字。 将单字节字符转换为双字节字符。 使用 ¥(日圆)货币格式将数字转换成UPPER(text) VALUE(text) WIDECHAR(text) TRIM(text) T(value) TEXT(value,format_text) YEN(number,decimals) 文本,并对指定位置后的数字四舍五入。 返回代表特定日期的系列数。 DATE(year,month,day) 计算两个日期之间的天数、月数或年数。 函数 DATEVALUE 的主要功DATEDIF(start_date,end_date,unit) DATEVALUE 能是将以文字表示的日期转换DATEVALUE(date_text) 成一个系列数。 返回以系列数表示的某日期的天数,用整数 1 到 31 表示。 按照一年 360 天的算法(每个DAY DAY(serial_number) DAYS360 月以 30 天计,一年共计 12 个DAYS360(start_date,end_date,method) 月),返回两日期间相差的天数。 返回指定日期 (start_date) 之前或之后指定月份数的日期系列EDATE 数。使用函数 EDATE 可以计EDATE(start_date,months) 算与发行日处于一月中同一天的到期日的日期。 返回 start-date 之前或之后指定月份中最后一天的系列数。用EOMONTH 函数 EOMONTH 可计算特定EOMONTH(start_date,months) 月份中最后一天的时间系列数,用于证券的到期日等计算。 返回时间值的小时数。即一个介HOUR 于 0 (12:00 A.M.) 到 23 (11:00 HOUR(serial_number) P.M.) 之间的整数。 MINUTE 返回时间值中的分钟。即一个介于 0 到 59 之间的整数。 返回以系列数表示的日期中的MINUTE(serial_number) MONTH 月份。月份是介于 1(一月)和 MONTH(serial_number) 12(十二月)之间的整数。 返回参数 start-data 和 end-data 之间完整的工作日数NETWORKDAYS NETWORKDAYS(start_date,end_date,holidays) 值。工作日不包括周末和专门指定的假期 NOW SECOND 返回当前日期和时间所对应的系列数。 返回时间值的秒数。返回的秒数为 0 至 59 之间的整数。 返回某一特定时间的小数值,函数 TIME 返回的小数值为从 0 TIME 到 0.99999999 之间的数值,代表从 0:00:00 (12:00:00 A.M) 到 23:59:59 (11:59:59 P.M) 之间的时间。 返回由文本串所代表的时间的小数值。该小数值为从 0 到 TIMEVALUE 0.999999999 的数值,代表从 0:00:00 (12:00:00 AM) 到 23:59:59 (11:59:59 PM) 之间的时间。 返回当前日期的系列数,系列数TODAY 是 Microsoft Excel 用于日期和TODAY( ) 时间计算的日期-时间代码。 返回某日期为星期几。默认情况WEEKDAY 下,其值为 1(星期天)到 7WEEKDAY(serial_number,return_type) (星期六)之间的整数。 WEEKNUM 返回一个数字,该数字代表一年中的第几周。 返回某日期(起始日期)之前或WORKDAY 之后相隔指定工作日的某一日期的日期值。工作日不包括周末和专门指定的假日。 YEAR YEARFRAC
返回某日期的年份。返回值为 1900 到 9999 之间的整数。 返回 start_date 和 end_date 之YEAR(serial_number) WORKDAY(start_date,days,holidays) WEEKNUM(serial_num,return_type) TIMEVALUE(time_text) TIME(hour,minute,second) NOW( ) SECOND(serial_number) YEARFRAC(start_date,end_date,basis) 间的天数占全年天数的百分比。 在介绍查询与引用函数之前,我们先来了解一下有关引用的知识。 1、引用的作用
在Excel中引用的作用在于标识工作表上的单元格或单元格区域,并指明公式中所使用的数据的位置。通过引用,可以在公式中使用工作表不同部分的数据,或者在多个公式中使用同一单元格的数值。还可以引用同一工作簿不同工作表的单元格、不同工作簿的单元格、甚至其它应用程序中的数据。
2、引用的含义
关于引用需要了解如下几种情况的含义:
外部引用--不同工作簿中的单元格的引用称为外部引用。 远程引用--引用其它程序中的数据称为远程引用。
相对引用--在创建公式时,单元格或单元格区域的引用通常是相对于包含公式的单元格的相对位置。
绝对引用--如果在复制公式时不希望 Excel 调整引用,那么请使用绝对引用。即加入美元符号,如$C$1。
3、引用的表示方法
关于引用有两种表示的方法,即A1 和 R1C1 引用样式。 (1)引用样式一(默认)--A1
A1的引用样式是Excel的默认引用类型。这种类型引用字母标志列(从 A 到 IV ,共 256 列)和数字标志行(从 1 到 65536)。这些字母和数字被称为行和列标题。如果要引用单元格,请顺序输入列字母和行数字。例如,C25 引用了列 C 和行 25 交叉处的单元格。如果要引用单元格区域,请输入区域左上角单元格的引用、冒号(:)和区域右下角单元格的引用,如A20:C35。 (2)引用样式二--R1C1
在 R1C1 引用样式中,Excel 使用\"R\"加行数字和\"C\"加列数字来指示单元格的位置。例如,单元格绝对引用 R1C1 与 A1 引用样式中的绝对引用 $A$1 等价。如果活动单元格是 A1,则单元格相对引用 R[1]C[1] 将引用下面一行和右边一列的单元格,或是 B2。
在了解了引用的概念后,我们来看看Excel提供的查询与引用函数。查询与引用函数可以用来在数据清单或表格中查找特定数值,或者需要查找某一单元格的引用。Excel中一共提供了ADDRESS、AREAS、CHOOSE、COLUMN、COLUMNS、HLOOKUP、HYPERLINK、INDEX、INDIRECT、LOOKUP、MATCH、OFFSET、ROW、ROWS、TRANSPOSE、VLOOKUP 16个查询与引用函数。下面,笔者将分组介绍一下这些函数的使用方法及简单应用。
一、ADDRESS、COLUMN、ROW
1、 ADDRESS用于按照给定的行号和列标,建立文本类型的单元格地址。
其语法形式为:ADDRESS(row_num,column_num,abs_num,a1,sheet_text)
Row_num指在单元格引用中使用的行号。
Column_num指在单元格引用中使用的列标。
Abs_num 指明返回的引用类型,1代表绝对引用,2代表绝对行号,相对列标,3代表相对行号,绝对列标,4为相对引用。
A1用以指明 A1 或 R1C1 引用样式的逻辑值。如果 A1 为 TRUE 或省略,函数 ADDRESS 返回 A1 样式的引用;如果 A1 为 FALSE,函数 ADDRESS 返回 R1C1 样式的引用。
Sheet_text为一文本,指明作为外部引用的工作表的名称,如果省略 sheet_text,则不使用任何工作表名。
简单说,即ADDRESS(行号,列标,引用类型,引用样式,工作表名称)
比如,ADDRESS(4,5,1,FALSE,\"[Book1]Sheet1\") 等于 \"[Book1]Sheet1!R4C5\"参见图1
图1
2、 COLUMN用于返回给定引用的列标。
语法形式为:COLUMN(reference)
Reference为需要得到其列标的单元格或单元格区域。如果省略 reference,则假定为是对函数 COLUMN 所在单元格的引用。如果 reference 为一个单元格区域,并且函数 COLUMN 作为水平数组输入,则函数 COLUMN 将 reference 中的列标以水平数组的形式返回。但是Reference 不能引用多个区域。
3、 ROW用于返回给定引用的行号。
语法形式为:ROW(reference)
Reference为需要得到其行号的单元格或单元格区域。 如果省略 reference,则假定是对函数 ROW 所在单元格的引用。如果 reference 为一个单元格区域,并且函数 ROW 作为垂直数组输入,则函数 ROW 将 reference 的行号以垂直数组的形式返回。但是Reference 不能对多个区域进行引用。
二、AREAS、COLUMNS、INDEX、ROWS
1、 AREAS用于返回引用中包含的区域个数。其中区域表示连续的单元格组或某个单元格。
其语法形式为AREAS(reference)
Reference为对某一单元格或单元格区域的引用,也可以引用多个区域。如果需要将几个引用指定为一个参数,则必须用括号括起来。
2、 COLUMNS用于返回数组或引用的列数。
其语法形式为COLUMNS(array)
Array为需要得到其列数的数组、数组公式或对单元格区域的引用。
3、 ROWS用于返回引用或数组的行数。
其语法形式为ROWS(array)
Array为需要得到其行数的数组、数组公式或对单元格区域的引用。
以上各函数示例见图2
图2
4、 INDEX用于返回表格或区域中的数值或对数值的引用。
函数 INDEX() 有两种形式:数组和引用。数组形式通常返回数值或数值数组;引用形式通常返回引用。
(1)INDEX(array,row_num,column_num) 返回数组中指定单元格或单元格数组的数值。
Array为单元格区域或数组常数。Row_num为数组中某行的行序号,函数从该行返回数值。Column_num为数组中某列的列序号,函数从该列返回数值。需注意的是Row_num 和 column_num 必须指向 array 中的某一单元格,否则,函数 INDEX 返回错误值 #REF!。
(2)INDEX(reference,row_num,column_num,area_num) 返回引用中指定单元格或单元格区域的引用。
Reference为对一个或多个单元格区域的引用。
Row_num为引用中某行的行序号,函数从该行返回一个引用。
Column_num为引用中某列的列序号,函数从该列返回一个引用。
需注意的是Row_num、column_num 和 area_num 必须指向 reference 中的单元格;否则,函数 INDEX 返回错误值 #REF!。如果省略 row_num 和 column_num,函数 INDEX 返回由 area_num 所指定的区域。
三、INDIRECT、OFFSET
1、 INDIRECT用于返回由文字串指定的引用。
当需要更改公式中单元格的引用,而不更改公式本身,使用函数 INDIRECT。
其语法形式为:INDIRECT(ref_text,a1)
其中Ref_text为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文字串单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值 #REF!。
A1为一逻辑值,指明包含在单元格 ref_text 中的引用的类型。如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。如果 a1 为 FALSE,ref_text 被解释为 R1C1-样式的引用。
需要注意的是:如果 ref_text 是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值 #REF!。
2、 OFFSET函数用于以指定的引用为参照系,通过给定偏移量得到新的引用。
返回的引用可以是一个单元格或者单元格区域,并可以指定返回的行数或者列数。
其基本语法形式为:OFFSET(reference, rows, cols, height, width)。
其中,reference变量作为偏移量参照系的引用区域(reference必须为对单元格或相连单元格区域的引用,否则,OFFSET函数返回错误值#VALUE!)。
rows变量表示相对于偏移量参照系的左上角单元格向上(向下)偏移的行数(例如rows使用2作为参数,表示目标引用区域的左上角单元格比reference低2行),行数可为正数(代表在起始引用单元格的下方)或者负数(代表在起始引用单元格的上方)或者0(代表起始引用单元格)。
cols表示相对于偏移量参照系的左上角单元格向左(向右)偏移的列数(例如cols使用4作为参数,表示目标引用区域的左上角单元格比reference右移4列),列数可为正数(代表在起始引用单元格的右边)或者负数(代表在起始引用单元格的左边)。
如果行数或者列数偏移量超出工作表边缘,OFFSET函数将返回错误值#REF!。height变量表示高度,即所要返回的引用区域的行数(height必须为正数)。width变量表示宽度,即所要返回的引用区域的列数(width必须为正数)。如果省略height或者width,则假设其高度或者宽度与reference相同。例如,公式OFFSET(A1,2,3,4,5)表示比单元格A1靠下2行并靠右3列的4行5列的区域(即D3:H7区域)。
由此可见,OFFSET函数实际上并不移动任何单元格或者更改选定区域,它只是返回一个引用。
四、HLOOKUP、LOOKUP、MATCH、VLOOKUP
1、 LOOKUP函数与MATCH函数
LOOKUP函数可以返回向量(单行区域或单列区域)或数组中的数值。此系列函数用于在表格或数值数组的首行查找指定的数值,并由此返回表格或数组当前列中指定行处的数值。当比较值位于数据表的首行,并且要查找下面给定行中的数据时,使用函数 HLOOKUP。当比较值位于要进行数据查找的左边一列时,使用函数 VLOOKUP。
如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用函数 MATCH 而不是函数 LOOKUP。MATCH函数用来返回在指定方式下与指定数值匹配的数组中元素的相应位置。从以上分析可知,查找函数的功能,一是按搜索条件,返回被搜索区域内数据的一个数据值;二是按搜索条件,返回被搜索区域内某一数据所在的位置值。利用这两大功能,不仅能实现数据的查询,而且也能解决如\"定级\"之类的实际问题。
2、 LOOKUP用于返回向量(单行区域或单列区域)或数组中的数值。
函数 LOOKUP 有两种语法形式:向量和数组。
(1) 向量形式
函数 LOOKUP 的向量形式是在单行区域或单列区域(向量)中查找数值,然后返回第二个单行区域或单列区域中相同位置的数值。
其基本语法形式为LOOKUP(lookup_value,lookup_vector,result_vector)
Lookup_value为函数 LOOKUP 在第一个向量中所要查找的数值。Lookup_value 可以为数字、文本、逻辑值或包含数值的名称或引用。
Lookup_vector为只包含一行或一列的区域。Lookup_vector 的数值可以为文本、数字或逻辑值。
需要注意的是Lookup_vector 的数值必须按升序排序:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE;否则,函数 LOOKUP 不能返回正确的结果。文本不区分大小写。
Result_vector 只包含一行或一列的区域,其大小必须与 lookup_vector 相同。
如果函数 LOOKUP 找不到 lookup_value,则查找 lookup_vector 中小于或等于 lookup_value 的最大数值。
如果 lookup_value 小于 lookup_vector 中的最小值,函数 LOOKUP 返回错误值 #N/A。
示例详见图3
图3
(2) 数组形式
函数 LOOKUP 的数组形式在数组的第一行或第一列查找指定的数值,然后返回数组的最后一行或最后一列中相同位置的数值。通常情况下,最好使用函数 HLOOKUP 或函数 VLOOKUP 来替代函数 LOOKUP 的数组形式。函数 LOOKUP 的这种形式主要用于与其他电子表格兼容。关于LOOKUP的数组形式的用法在此不再赘述,感兴趣的可以参看Excel的帮助。
3、 HLOOKUP与VLOOKUP
HLOOKUP用于在表格或数值数组的首行查找指定的数值,并由此返回表格或数组当前列中指定行处的数值。
VLOOKUP用于在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。
当比较值位于数据表的首行,并且要查找下面给定行中的数据时,请使用函数 HLOOKUP。
当比较值位于要进行数据查找的左边一列时,请使用函数 VLOOKUP。
语法形式为:
HLOOKUP(lookup_value,table_array,row_index_num,range_lookup)
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
其中,Lookup_value表示要查找的值,它必须位于自定义查找区域的最左列。Lookup_value 可以为数值、引用或文字串。
Table_array查找的区域,用于查找数据的区域,上面的查找值必须位于这个区域的最左列。可以使用对区域或区域名称的引用。
Row_index_num为 table_array 中待返回的匹配值的行序号。Row_index_num 为 1 时,返回 table_array 第一行的数值,row_index_num 为 2 时,返回 table_array 第二行的数值,以此类推。
Col_index_num为相对列号。最左列为1,其右边一列为2,依此类推.
Range_lookup为一逻辑值,指明函数 HLOOKUP 查找时是精确匹配,还是近似匹配。
下面详细介绍一下VLOOKUP函数的应用。
简言之,VLOOKUP函数可以根据搜索区域内最左列的值,去查找区域内其它列的数据,并返回该列的数据,对于字母来说,搜索时不分大小写。所以,函数VLOOKUP的查找可以达到两种目的:一是精确的查找。二是近似的查找。下面分别说明。
(1) 精确查找--根据区域最左列的值,对其它列的数据进行精确的查找
示例:创建工资表与工资条
首先建立员工工资表
图4
然后,根据工资表创建各个员工的工资条,此工资条为应用Vlookup函数建立。以员工Sandy(编号A001)的工资条创建为例说明。
第一步,拷贝标题栏
第二步,在编号处(A21)写入A001
第三步,在姓名(B21)创建公式
=VLOOKUP($A21,$A$3:$H$12,2,FALSE)
语法解释:在$A$3:$H$12范围内(即工资表中)精确找出与A21单元格相符的行,并将该行中第二列的内容计入单元格中。
第四步,以此类推,在随后的单元格中写入相应的公式。
图5
(2) 近似的查找--根据定义区域最左列的值,对其它列数据进行不精确值的查找
示例:按照项目总额不同提取相应比例的奖金
第一步,建立一个项目总额与奖金比例的对照表,如图6所示。项目总额的数字均为大于情况。即项目总额在0~5000元时,奖金比例为1%,以此类推。
图6
第二步 假定某项目的项目总额为13000元,在B11格中输入公式
=VLOOKUP(A11,$A$4:$B$8,2,TRUE)
即可求得具体的奖金比例为5%,如图7。
图7
4、 MATCH函数
MATCH函数有两方面的功能,两种操作都返回一个位置值。
一是确定区域中的一个值在一列中的准确位置,这种精确的查询与列表是否排序无关。
二是确定一个给定值位于已排序列表中的位置,这不需要准确的匹配.
语法结构为:MATCH(lookup_value,lookup_array,match_type)
lookup_value为要搜索的值。
lookup_array:要查找的区域(必须是一行或一列)。
match_type:匹配形式,有0、1和-1三种选择:\"0\"表示一个准确的搜索。\"1\"表示搜索小于或等于查换值的最大值,查找区域必须为升序排列。\"-1\"表示搜索大于或等于查找值的最小值,查找区域必须降序排开。以上的搜索,如果没有匹配值,则返回#N/A。
五、HYPERLINK
所谓HYPERLINK,也就是创建快捷方式,以打开文档或网络驱动器,甚至INTERNET地址。通俗地讲,就是在某个单元格中输入此函数之后,可以到您想去的任何位置。在某个Excel文档中,也许您需要引用别的Excel文档或Word文档等等,其步骤和方法是这样的:
(1)选中您要输入此函数的单元格,比如B6。
(2)单击常用工具栏中的\"粘贴函数\"图标,将出现\"粘贴函数\"对话框,在\"函数分类\"框中选择\"常用\",在\"函数名\"框中选择HYPERLINK,此时在对话框的底部将出现该函数的简短解释。
(3)单击\"确定\"后将弹出HYPERLINK函数参数设置对话框。
(4)在\"Link_location\"中键入要链接的文件或INTERNET地址,比如:\"c:\\my
documents\\Excel函数.doc\";在\"Friendly_name\"中键入\"Excel函数\"(这里是假设我们要打开的文档位于c:\\my documents下的文件\"Excel函数.doc\")。
(5)单击\"确定\"回到您正编辑的Excel文档,此时再单击B6单元格就可立即打开用Word编辑的会议纪要文档。
HYPERLINK函数用于创建各种快捷方式,比如打开文档或网络驱动器,跳转到某个网址等。说得夸大一点,在某个单元格中输入此函数之后,可以跳到我们想去的任何位置。
六、其他(CHOOSE、TRANSPOSE)
1、CHOOSE函数
函数CHOOSE可以使用 index_num 返回数值参数清单中的数值。使用函数 CHOOSE 可以基于索引号返回多达 29 个待选数值中的任一数值。
语法形式为:CHOOSE(index_num,value1,value2,...)
Index_num用以指明待选参数序号的参数值。Index_num 必须为 1 到 29 之间的数字、或者是包含数字 1 到 29 的公式或单元格引用。
Value1,value2,... 为 1 到 29 个数值参数,函数 CHOOSE 基于 index_num,从中选择一个数值或执行相应的操作。参数可以为数字、单元格引用,已定义的名称、公式、函数或文本。
2、TRANSPOSE函数
TRANSPOSE用于返回区域的转置。函数 TRANSPOSE 必须在某个区域中以数组公式的形式输入,该区域的行数和列数分别与 array 的列数和行数相同。使用函数 TRANSPOSE 可以改变工作表或宏表中数组的垂直或水平走向。
语法形式为TRANSPOSE(array)
Array为需要进行转置的数组或工作表中的单元格区域。所谓数组的转置就是,将数组的第一行作为新数组的第一列,数组的第二行作为新数组的第二列,以此类推。
示例,将原来为横向排列的业绩表转置为纵向排列。
图8
第一步,由于需要转置的为多个单元格形式,因此需要以数组公式的方法输入公式。故首先选定需转置的范围。此处我们设定转置后存放的范围为A9.B14.
第二步,单击常用工具栏中的\"粘贴函数\"图标,将出现\"粘贴函数\"对话框,在\"函数分类\"框中选择\"查找与引用函数\"框中选择TRANSPOSE,此时在对话框的底部将出现该函数的简短解释。单击\"确定\"后将弹出TRANSPOSE函数参数设置对话框。
图9
第三步,选择数组的范围即A2.F3
第四步,由于此处是以数组公式输入,因此需要按 CRTL+SHIFT+ENTER 组合键来确定为数组公式,此时会在公式中显示\"{}\"。随即转置成功,如图10所示。
图10
以上我们介绍了Excel的查找与引用函数,此类函数的灵活应用对于减少重复数据的录入是大有裨益的。此处只做了些抛砖引玉的示例,相信大家会在实际运用中想出更具实用性的应用方法。
Excel的统计工作表函数用于对数据区域进行统计分析。例如,统计工作表函数可以用来统计样本的方差、数据区间的频率分布等。是不是觉得好像是很专业范畴的东西?是的,统计工作表函数中提供了很多属于统计学范畴的函数,但也有些函数其实在你我的日常生活中是很常用的,比如求班级平均成绩,排名等。在本文中,主要介绍一些常见的统计函数,而属于统计学范畴的函数不在此赘述,详细的使用方法可以参考Excel帮助及相关的书籍。
在介绍统计函数之前,请大家先看一下附表中的函数名称。是不是发现有些函数是很类似的,只是在名称中多了一个字母A?比如,AVERAGE与AVERAGEA;COUNT与COUNTA。基本上,名称中带A的函数在统计时不仅统计数字,而且文本和逻辑值(如TRUE 和 FALSE)也将计算在内。在下文中笔者将主要介绍不带A的几种常见函数的用法。
一、用于求平均值的统计函数AVERAGE、TRIMMEAN
1、求参数的算术平均值函数AVERAGE
语法形式为AVERAGE(number1,number2, ...)
其中Number1, number2, ...为要计算平均值的 1~30 个参数。这些参数可以是数字,或者是涉及数字的名称、数组或引用。如果数组或单元格引用参数中有文字、逻辑值或空单元格,则忽略其值。但是,如果单元格包含零值则计算在内。
2、求数据集的内部平均值TRIMMEAN
函数TRIMMEAN先从数据集的头部和尾部除去一定百分比的数据点,然后再求平均值。当希望在分析中剔除一部分数据的计算时,可以使用此函数。比如,我们在计算选手平均分数中常用去掉一个最高分,去掉一个最低分,XX号选手的最后得分,就可以使用该函数来计算。 语法形式为TRIMMEAN(array,percent)
其中Array为需要进行筛选并求平均值的数组或数据区域。Percent为计算时所要除去的数据点的比例,例如,如果 percent = 0.2,在 20 个数据点的集合中,就要除去 4 个数据点(20 x 0.2),头部除去 2 个,尾部除去 2 个。函数 TRIMMEAN 将除去的数据点数目向下舍为最接近的 2 的倍数。
3、举例说明:示例中也列举了带A的函数AVERAGEA的求解方法。
求选手Annie的参赛分数。在这里,我们先假定已经将该选手的分数进行了从高到底的排序,在后面的介绍中我们将详细了解排序的方法。
图1
二、用于求单元格个数的统计函数COUNT 语法形式为COUNT(value1,value2, ...)
其中Value1, value2, ...为包含或引用各种类型数据的参数(1~30个),但只有数字类型的数据才被计数。函数 COUNT 在计数时,将把数字、空值、逻辑值、日期或以文字代表的数计算进去;但是错误值或其他无法转化成数字的文字则被忽略。
如果参数是一个数组或引用,那么只统计数组或引用中的数字;数组中或引用的空单元格、逻辑值、文字或错误值都将忽略。如果要统计逻辑值、文字或错误值,应当使用函数 COUNTA。 举例说明COUNT函数的用途,示例中也列举了带A的函数COUNTA的用途。仍以上例为例,要计算一共有多少评委参与评分(用函数COUNTA),以及有几个评委给出了有效分数(用函数COUNT)。
图2
三、求区域中数据的频率分布FREQUENCY
由于函数 FREQUENCY 返回一个数组,必须以数组公式的形式输入。 语法形式为FREQUENCY(data_array,bins_array)
其中Data_array为一数组或对一组数值的引用,用来计算频率。如果 data_array 中不包含任何数值,函数 FREQUENCY 返回零数组。Bins_array为一数组或对数组区域的引用,设定对 data_array 进行频率计算的分段点。如果 bins_array 中不包含任何数值,函数 FREQUENCY 返回 data_array 元素的数目。
看起来FREQUENCY的用法蛮复杂的,但其用处很大。比如可以计算不同工资段的人员分布,公司员工的年龄分布,学生成绩的分布情况等。这里以具体示例说明其基本的用法。
以计算某公司的员工年龄分布情况为例说明。在工作表里列出了员工的年龄。这些年龄为 28、25、31、21、44、33、22 和 35,并分别输入到单元格 C4:C11。这一列年龄就是 data_array。Bins_array 是另一列用来对年龄分组的区间值。在本例中,bins_array 是指 C13:C16 单元格,
分别含有值 25、30、35、和 40。以数组形式输入函数 FREQUENCY,就可以计算出年龄在 25岁以下、26~30岁、31~35岁、36~40岁和40岁以上各区间中的数目。本例中选择了5个垂直相邻的单元格后,即以数组公式输入下面的公式。返回的数组中的元素个数比 bins_array(数组)中的元素个数多 1。第五个数字1表示大于最高间隔 (40) 的数值(44)的个数。函数 FREQUENCY 忽略空白单元格和文本值。
因篇幅问题不能全部显示,请点此查看更多更全内容