真心交流,共同进步
Excel函数教程
上一篇 / 下一篇 2009-03-12 20:39:54 / 个人分类:办公资料
请跟随笔者开始excel的函数之旅。这里,笔者先假设您已经对于excel的基本操作有了一定的认识。首先我们先来了解一些与函数有关的知识。
一、什么是函数
excel中所提的函数其实是一些预定义的公式,它们使用一些称为参数的特定数值按特定的顺序或结构进行计算。用户可以直接用它们对某个区域内的数值进行一系列运算,如分析和处理日期值和时间值、确定贷款的支付额、确定单元格中的数据类型、计算平均值、排序显示和运算文本数据等等。例如,SUM 函数对单元格或单元格区域进行加法运算。
函数是否可以是多重的呢?也就是说一个函数是否可以是另一个函数的参数呢?当然可以,这就是嵌套函数的含义。所谓嵌套函数,就是指在某些情况下,您可能需要将某函数作为另一函数的参数使用。例如图1中所示的公式使用了嵌套的 AVERAGE 函数,并将结果与 50 相比较。这个公式的含义是:如果单元格F2到F5的平均值大于50,则求F2到F5的和,否则显示数值0。
图1 嵌套函数
图2 函数的结构
图3 公式选项板
在excel中如何使用函数呢?
1.单击需要输入函数的单元格,如图4所示,单击单元格C1,出现编辑栏
图4 单元格编辑
3.单击"函数"按钮右端的箭头,打开函数列表框,从中选择所需的函数;
图5 函数列表框
5.单击"确定"按钮,即可完成函数的输入;
6.如果列表中没有所需的函数,可以单击"其它函数"选项,打开"粘贴函数"对话框,用户可以从中选择所需的函数,然后单击"确定"按钮返回到"公式选项板"对话框。
在了解了函数的基本知识及使用方法后,请跟随笔者一起寻找excel提供的各种函数。您可以通过单击插入栏中的"函数"看到所有的函数。
图6 粘贴函数列表
excel函数一共有11类,分别是数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户自定义函数。
1.数据库函数--当需要分析数据清单中的数值是否符合特定条件时,可以使用数据库工作表函数。例如,在一个包含销售信息的数据清单中,可以计算出所有销售数值大于 1,000 且小于 2,500 的行或记录的总数。Microsoftexcel共有 12 个工作表函数用于对存储在数据清单或数据库中的数据进行分析,这些函数的统一名称为 Dfunctions,也称为 D 函数,每个函数均有三个相同的参数:database、field 和 criteria。这些参数指向数据库函数所使用的工作表区域。其中参数 database 为工作表上包含数据清单的区域。参数 field 为需要汇总的列的标志。参数 criteria 为工作表上包含指定条件的区域。
2.日期与时间函数--通过日期与时间函数,可以在公式中分析和处理日期值和时间值。
3.工程函数--工程工作表函数用于工程分析。这类函数中的大多数可分为三种类型:对复数进行处理的函数、在不同的数字系统(如十进制系统、十六进制系统、八进制系统和二进制系统)间进行数值转换的函数、在不同的度量系统中进行数值转换的函数。
4.财务函数--财务函数可以进行一般的财务计算,如确定贷款的支付额、投资的未来值或净现值,以及债券或息票的价值。财务函数中常见的参数:
未来值 (fv)--在所有付款发生后的投资或贷款的价值。
期间数 (nper)--投资的总支付期间数。
付款 (pmt)--对于一项投资或贷款的定期支付数额。
现值 (pv)--在投资期初的投资或贷款的价值。例如,贷款的现值为所借入的本金数额。
利率 (rate)--投资或贷款的利率或贴现率。
类型 (type)--付款期间内进行支付的间隔,如在月初或月末。
6.逻辑函数--使用逻辑函数可以进行真假值判断,或者进行复合检验。例如,可以使用 IF 函数确定条件为真还是假,并由此返回不同的数值。
7.查询和引用函数--当需要在数据清单或表格中查找特定数值,或者需要查找某一单元格的引用时,可以使用查询和引用工作表函数。例如,如果需要在表格中查找与第一列中的值相匹配的数值,可以使用 VLOOKUP 工作表函数。如果需要确定数据清单中数值的位置,可以使用 MATCH 工作表函数。
8.数学和三角函数--通过数学和三角函数,可以处理简单的计算,例如对数字取整、计算单元格区域中的数值总和或复杂计算。
9.统计函数--统计工作表函数用于对数据区域进行统计分析。例如,统计工作表函数可以提供由一组给定值绘制出的直线的相关信息,如直线的斜率和 y 轴截距,或构成直线的实际点数值。
10.文本函数--通过文本函数,可以在公式中处理文字串。例如,可以改变大小写或确定文字串的长度。可以将日期插入文字串或连接在文字串上。下面的公式为一个示例,借以说明如何使用函数 TODAY 和函数 TEXT 来创建一条信息,该信息包含着当前日期并将日期以"dd-mm-yy"的格式表示。
11.用户自定义函数--如果要在公式或计算中使用特别复杂的计算,而工作表函数又无法满足需要,则需要创建用户自定义函数。这些函数,称为用户自定义函数,可以通过使用 Visual Basic for Applications 来创建。
以上对excel函数及有关知识做了简要的介绍,在以后的文章中笔者将逐一介绍每一类函数的使用方法及应用技巧。但是由于excel的函数相当多,因此也可能仅介绍几种比较常用的函数使用方法,其他更多的函数您可以从excel的在线帮助功能中了解更详细的资讯。[dvnews_page=excel函数应用之数学和三角函数]学习excel函数,我们还是从“数学与三角函数”开始。毕竟这是我们非常熟悉的函数,这些正弦函数、余弦函数、取整函数等等从中学开始,就一直陪伴着我们。
首先,让我们一起看看excel提供了哪些数学和三角函数。笔者在这里以列表的形式列出excel提供的所有数学和三角函数,详细请看附注的表格。
从表中我们不难发现,excel提供的数学和三角函数已基本囊括了我们通常所用得到的各种数学公式与三角函数。这些函数的详细用法,笔者不在这里一一赘述,下面从应用的角度为大家演示一下这些函数的使用方法。
一、与求和有关的函数的应用
SUM函数是excel中使用最多的函数,利用它进行求和运算可以忽略存有文本、空格等数据的单元格,语法简单、使用方便。相信这也是大家最先学会使用的excel函数之一。但是实际上,excel所提供的求和函数不仅仅只有SUM一种,还包括SUBTOTAL、SUM、SUMIF、SUMPRODUCT、SUMSQ、SUMX2MY2、SUMX2PY2、SUMXMY2几种函数。
这里笔者将以某单位工资表为例重点介绍SUM(计算一组参数之和)、SUMIF(对满足某一条件的单元格区域求和)的使用。(说明:为力求简单,示例中忽略税金的计算。)
图1 函数求和
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,"销售部",$F$3:$F$12)
其中"$C$3:$C$12"为提供逻辑判断依据的单元格区域,"销售部"为判断条件即只统计$C$3:$C$12区域中部门为"销售部"的单元格,$F$3:$F$12为实际求和的单元格区域。
二、与函数图像有关的函数应用
这里,笔者以正弦函数和余弦函数为例说明函数图像的描绘方法。
图2 函数图像绘制
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 对数字进行四舍五入
最后需要说明的是:本文所有公式均在excel97和excel2000中验证通过,修改其中的单元格引用和逻辑条件值,可用于相似的其他场合。
附注:excel的数学和三角函数一览表
ABS 工作表函数 | 返回参数的绝对值 |
ACOS 工作表函数 | 返回数字的反余弦值 |
ACOSH 工作表函数 | 返回参数的反双曲余弦值 |
ASIN 工作表函数 | 返回参数的反正弦值 |
ASINH 工作表函数 | 返回参数的反双曲正弦值 |
ATAN 工作表函数 | 返回参数的反正切值 |
ATAN2 工作表函数 | 返回给定的 X 及 Y 坐标值的反正切值 |
ATANH 工作表函数 | 返回参数的反双曲正切值 |
CEILING 工作表函数 | 将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数 |
COMBIN 工作表函数 | 计算从给定数目的对象集合中提取若干对象的组合数 |
COS 工作表函数 | 返回给定角度的余弦值 |
COSH 工作表函数 | 返回参数的双曲余弦值 |
COUNTIF 工作表函数 | 计算给定区域内满足特定条件的单元格的数目 |
DEGREES 工作表函数 | 将弧度转换为度 |
EVEN 工作表函数 | 返回沿绝对值增大方向取整后最接近的偶数 |
EXP 工作表函数 | 返回 e 的 n 次幂常数 e 等于 2.71828182845904,是自然对数的底数 |
FACT 工作表函数 | 返回数的阶乘,一个数的阶乘等于 1*2*3*...*该数 |
FACTDOUBLE 工作表函数 | 返回参数 Number 的半阶乘 |
FLOOR 工作表函数 | 将参数 Number 沿绝对值减小的方向去尾舍入,使其等于最接近的 significance 的倍数 |
GCD 工作表函数 | 返回两个或多个整数的最大公约数 |
INT 工作表函数 | 返回实数舍入后的整数值 |
LCM 工作表函数 | 返回整数的最小公倍数 |
LN 工作表函数 | 返回一个数的自然对数自然对数以常数项 e(2.71828182845904)为底 |
LOG 工作表函数 | 按所指定的底数,返回一个数的对数 |
LOG10 工作表函数 | 返回以 10 为底的对数 |
MDETERM 工作表函数 | 返回一个数组的矩阵行列式的值 |
MINVERSE 工作表函数 | 返回数组矩阵的逆距阵 |
MMULT 工作表函数 | 返回两数组的矩阵乘积结果 |
MOD 工作表函数 | 返回两数相除的余数结果的正负号与除数相同 |
MROUND 工作表函数 | 返回参数按指定基数舍入后的数值 |
MULTINOMIAL 工作表函数 | 返回参数和的阶乘与各参数阶乘乘积的比值 |
ODD 工作表函数 | 返回对指定数值进行舍入后的奇数 |
PI 工作表函数 | 返回数字 3.14159265358979,即数学常数 pi,精确到小数点后 15 位 |
POWER 工作表函数 | 返回给定数字的乘幂 |
PRODUCT 工作表函数 | 将所有以参数形式给出的数字相乘,并返回乘积值 |
QUOTIENT 工作表函数 | 回商的整数部分,该函数可用于舍掉商的小数部分 |
RADIANS 工作表函数 | 将角度转换为弧度 |
RAND 工作表函数 | 返回大于等于 0 小于 1 的均匀分布随机数 |
RANDBETWEEN 工作表函数 | 返回位于两个指定数之间的一个随机数 |
ROMAN 工作表函数 | 将阿拉伯数字转换为文本形式的罗马数字 |
ROUND 工作表函数 | 返回某个数字按指定位数舍入后的数字 |
ROUNDDOWN 工作表函数 | 靠近零值,向下(绝对值减小的方向)舍入数字 |
ROUNDUP 工作表函数 | 远离零值,向上(绝对值增大的方向)舍入数字 |
SERIESSUM 工作表函数 | 返回基于以下公式的幂级数之和: |
SIGN 工作表函数 | 返回数字的符号当数字为正数时返回 1,为零时返回 0,为负数时返回 -1 |
SIN 工作表函数 | 返回给定角度的正弦值 |
SINH 工作表函数 | 返回某一数字的双曲正弦值 |
SQRT 工作表函数 | 返回正平方根 |
SQRTPI 工作表函数 | 返回某数与 pi 的乘积的平方根 |
SUBTOTAL 工作表函数 | 返回数据清单或数据库中的分类汇总 |
SUM 工作表函数 | 返回某一单元格区域中所有数字之和 |
SUMIF 工作表函数 | 根据指定条件对若干单元格求和 |
SUMPRODUCT 工作表函数 | 在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和 |
SUMSQ 工作表函数 | 返回所有参数的平方和 |
SUMX2MY2 工作表函数 | 返回两数组中对应数值的平方差之和 |
SUMX2PY2 工作表函数 | 返回两数组中对应数值的平方和之和,平方和加总在统计计算中经常使用 |
SUMXMY2 工作表函数 | 返回两数组中对应数值之差的平方和 |
TAN 工作表函数 | 返回给定角度的正切值 |
TANH 工作表函数 | 返回某一数字的双曲正切值 |
TRUNC 工作表函数 | 将数字的小数部分截去,返回整数 |
[dvnews_page=excel函数应用之逻辑函数]用来判断真假值,或者进行复合检验的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 AND函数示例2
OR函数指在其参数组中,任何一个参数逻辑值为 TRUE,即返回 TRUE。它与AND函数的区别在于,AND函数要求所有函数逻辑值均为真,结果方为真。而OR函数仅需其中任何一个为真即可为真。比如,上面的示例2,如果在B4单元格中的公式写为=OR(B1:B3)则结果等于TRUE
图3 OR函数示例
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
=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
如果对上述例子有了很好的理解后,我们就很容易将IF函数应用到更广泛的领域。比如,在成绩表中根据不同的成绩区分合格与不合格。现在我们就以某班级的英语成绩为例具体说明用法。
图6
根据这一规则,我们在综合评定中写公式(以单元格B12为例):
=IF(B11>60,"合格","不合格")
语法解释为,如果单元格B11的值大于60,则执行第二个参数即在单元格B12中显示合格字样,否则执行第三个参数即在单元格B12中显示不合格字样。
在综合评定栏中可以看到由于C列的同学各科平均分为54分,综合评定为不合格。其余均为合格。
3、 多层嵌套函数的应用
在上述的例子中,我们只是将成绩简单区分为合格与不合格,在实际应用中,成绩通常是有多个等级的,比如优、良、中、及格、不及格等。有办法一次性区分吗?可以使用多层嵌套的办法来实现。仍以上例为例,我们设定综合评定的规则为当各科平均分超过90时,评定为优秀。如图7所示。
图7
根据这一规则,我们在综合评定中写公式(以单元格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
=COUNTIF(B4:B10,">90")
语法解释为,计算B4到B10这个范围,即jarry的各科成绩中有多少个数值大于90的单元格。
在优秀门数栏中可以看到jarry的优秀门数为两门。其他人也可以依次看到。
2、 销售业绩表
销售业绩表可能是综合运用IF、SUMIF、COUNTIF非常典型的示例。比如,可能希望计算销售人员的订单数,然后汇总每个销售人员的销售额,并且根据总发货量决定每次销售应获得的奖金。
原始数据表如图9所示(原始数据是以流水单形式列出的,即按订单号排列)
图9 原始数据表
图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函数的逻辑函数,相信大家在实际工作中会想出更多更有用的运用。
[dvnews_page=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",4)=This
RIGHT("This is an apple",5)=apple
MID("This is an apple",6,2)=is
图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","china")=False
图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
三、示例:做一个美观简洁的人事资料分析表
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",MID(E4,7,2),"/",MID(E4,9,2),"/",MID(E4,11,2))
公式解释:a. MID(E4,7,2)为在身份证号码中获取表示年份的数字的字符串
b. MID(E4,9,2) 为在身份证号码中获取表示月份的数字的字符串
c. MID(E4,11,2) 为在身份证号码中获取表示日期的数字的字符串
d. CONCATENATE("19",MID(E4,7,2),"/",MID(E4,9,2),"/",MID(E4,11,2))目的就是将多个字符串合并在一起显示。
(3)根据参加工作时间求年资(即工龄)
=CONCATENATE(DATEDIF(F4,TODAY(),"y"),"年",DATEDIF(F4,TODAY(),"ym"),"个月")
公式解释:
a. TODAY()用于求出系统当前的时间
b. DATEDIF(F4,TODAY(),"y")用于计算当前系统时间与参加工作时间相差的年份
c. DATEDIF(F4,TODAY(),"ym")用于计算当前系统时间与参加工作时间相差的月份,忽略日期中的日和年。
d. =CONCATENATE(DATEDIF(F4,TODAY(),"y"),"年",DATEDIF(F4,TODAY(),"ym"),"个月")目的就是将多个字符串合并在一起显示。
5. 其他说明
在这张人事资料表中我们还发现,创建日期:31-05-2001时显示在同一个单元格中的。这是如何实现的呢?难道是手工添加的吗?不是,实际上这个日期还是变化的,它显示的是系统当前时间。这里是利用函数 TODAY 和函数 TEXT 一起来创建一条信息,该信息包含着当前日期并将日期以"dd-mm-yyyy"的格式表示。
具体公式写法为:="创建日期:"&TEXT(TODAY(),"dd-mm-yyyy")<BR>
至此,我们对于文本函数、日期与时间函数已经有了大致的了解,同时也设想了一些应用领域。相信随着大家在这方面的不断研究,会有更广泛的应用。
附一:文本函数
函数名 | 函数说明 | 语法 |
---|---|---|
ASC | 将字符串中的全角(双字节)英文字母更改为半角(单字节)字符。 | ASC(text) |
CHAR | 返回对应于数字代码的字符,函数 CHAR 可将其他类型计算机文件中的代码转换为字符。 | CHAR(number) |
CLEAN | 删除文本中不能打印的字符。对从其他应用程序中输入的字符串使用 CLEAN 函数,将删除其中含有的当前操作系统无法打印的字符。例如,可以删除通常出现在数据文件头部或尾部、无法打印的低级计算机代码。 | CLEAN(text) |
CODE | 返回文字串中第一个字符的数字代码。返回的代码对应于计算机当前使用的字符集。 | CODE(text) |
CONCATENATE | 将若干文字串合并到一个文字串中。 | CONCATENATE (text1,text2,...) |
DOLLAR | 依照货币格式将小数四舍五入到指定的位数并转换成文字。 | DOLLAR 或 RMB(number,decimals) |
EXACT | 该函数测试两个字符串是否完全相同。如果它们完全相同,则返回 TRUE;否则,返回 FALSE。函数 EXACT 能区分大小写,但忽略格式上的差异。利用函数 EXACT 可以测试输入文档内的文字。 | EXACT(text1,text2) |
FIND | FIND 用于查找其他文本串 (within_text) 内的文本串 (find_text),并从 within_text 的首字符开始返回 find_text 的起始位置编号。 | FIND(find_text,within_text,start_num) |
FIXED | 按指定的小数位数进行四舍五入,利用句点和逗号,以小数格式对该数设置格式,并以文字串形式返回结果。 | FIXED(number,decimals,no_commas) |
JIS | 将字符串中的半角(单字节)英文字母或片假名更改为全角(双字节)字符。 | JIS(text) |
LEFT | LEFT 基于所指定的字符数返回文本串中的第一个或前几个字符。 LEFTB 基于所指定的字节数返回文本串中的第一个或前几个字符。此函数用于双字节字符。 | LEFT(text,num_chars) LEFTB(text,num_bytes) |
LEN | LEN 返回文本串中的字符数。 LENB 返回文本串中用于代表字符的字节数。此函数用于双字节字符。 | LEN(text) LENB(text) |
LOWER | 将一个文字串中的所有大写字母转换为小写字母。 | LOWER(text) |
MID | MID 返回文本串中从指定位置开始的特定数目的字符,该数目由用户指定。 MIDB 返回文本串中从指定位置开始的特定数目的字符,该数目由用户指定。此函数用于双字节字符。 | MID(text,start_num,num_chars) MIDB(text,start_num,num_bytes) |
PHONETIC | 提取文本串中的拼音 (furigana) 字符。 | PHONETIC(reference) |
PROPER | 将文字串的首字母及任何非字母字符之后的首字母转换成大写。将其余的字母转换成小写。 | PROPER(text) |
REPLACE | REPLACE 使用其他文本串并根据所指定的字符数替换某文本串中的部分文本。 REPLACEB 使用其他文本串并根据所指定的字符数替换某文本串中的部分文本。此函数专为双字节字符使用。 | REPLACE(old_text,start_num,num_chars,new_text) REPLACEB(old_text,start_num,num_bytes,new_text) |
REPT | 按照给定的次数重复显示文本。可以通过函数 REPT 来不断地重复显示某一文字串,对单元格进行填充。 | REPT(text,number_times) |
RIGHT | RIGHT 根据所指定的字符数返回文本串中最后一个或多个字符。 RIGHTB 根据所指定的字符数返回文本串中最后一个或多个字符。此函数用于双字节字符。 | RIGHT(text,num_chars) RIGHTB(text,num_bytes) |
SEARCH | SEARCH 返回从 start_num 开始首次找到特定字符或文本串的位置上特定字符的编号。使用 SEARCH 可确定字符或文本串在其他文本串中的位置,这样就可使用 MID 或 REPLACE 函数更改文本。 SEARCHB 也可在其他文本串 (within_text) 中查找文本串 (find_text),并返回 find_text 的起始位置编号。此结果是基于每个字符所使用的字节数,并从 start_num 开始的。此函数用于双字节字符。此外,也可使用 FINDB 在其他文本串中查找文本串。 | SEARCH(find_text,within_text,start_num) SEARCHB(find_text,within_text,start_num) |
SUBSTITUTE | 在文字串中用 new_text 替代 old_text。如果需要在某一文字串中替换指定的文本,请使用函数 SUBSTITUTE;如果需要在某一文字串中替换指定位置处的任意文本,请使用函数 REPLACE。 | SUBSTITUTE(text,old_text,new_text,instance_num) |
T | 将数值转换成文本。 | T(value) |
TEXT | 将一数值转换为按指定数字格式表示的文本。 | TEXT(value,format_text) |
TRIM | 除了单词之间的单个空格外,清除文本中所有的空格。在从其他应用程序中获取带有不规则空格的文本时,可以使用函数 TRIM。 | TRIM(text) |
UPPER | 将文本转换成大写形式。 | UPPER(text) |
VALUE | 将代表数字的文字串转换成数字。 | VALUE(text) |
WIDECHAR | 将单字节字符转换为双字节字符。 | WIDECHAR(text) |
YEN | 使用 ¥(日圆)货币格式将数字转换成文本,并对指定位置后的数字四舍五入。 | YEN(number,decimals) |
附二、日期与时间函数
函数名 | 函数说明 | 语法 |
---|---|---|
DATE | 返回代表特定日期的系列数。 | DATE(year,month,day) |
DATEDIF | 计算两个日期之间的天数、月数或年数。 | DATEDIF(start_date,end_date,unit) |
DATEVALUE | 函数 DATEVALUE 的主要功能是将以文字表示的日期转换成一个系列数。 | DATEVALUE(date_text) |
DAY | 返回以系列数表示的某日期的天数,用整数 1 到 31 表示。 | DAY(serial_number) |
DAYS360 | 按照一年 360 天的算法(每个月以 30 天计,一年共计 12 个月),返回两日期间相差的天数。 | DAYS360(start_date,end_date,method) |
EDATE | 返回指定日期 (start_date) 之前或之后指定月份数的日期系列数。使用函数 EDATE 可以计算与发行日处于一月中同一天的到期日的日期。 | EDATE(start_date,months) |
EOMONTH | 返回 start-date 之前或之后指定月份中最后一天的系列数。用函数 EOMONTH 可计算特定月份中最后一天的时间系列数,用于证券的到期日等计算。 | EOMONTH(start_date,months) |
HOUR | 返回时间值的小时数。即一个介于 0 (12:00 A.M.) 到 23 (11:00 P.M.) 之间的整数。 | HOUR(serial_number) |
MINUTE | 返回时间值中的分钟。即一个介于 0 到 59 之间的整数。 | MINUTE(serial_number) |
MONTH | 返回以系列数表示的日期中的月份。月份是介于 1(一月)和 12(十二月)之间的整数。 | MONTH(serial_number) |
NETWORKDAYS | 返回参数 start-data 和 end-data 之间完整的工作日数值。工作日不包括周末和专门指定的假期 | NETWORKDAYS(start_date,end_date,holidays) |
NOW | 返回当前日期和时间所对应的系列数。 | NOW( ) |
SECOND | 返回时间值的秒数。返回的秒数为 0 至 59 之间的整数。 | SECOND(serial_number) |
TIME | 返回某一特定时间的小数值,函数 TIME 返回的小数值为从 0 到 0.99999999 之间的数值,代表从 0:00:00 (12:00:00 A.M) 到 23:59:59 (11:59:59 P.M) 之间的时间。 | TIME(hour,minute,second) |
TIMEVALUE | 返回由文本串所代表的时间的小数值。该小数值为从 0 到 0.999999999 的数值,代表从 0:00:00 (12:00:00 AM) 到 23:59:59 (11:59:59 PM) 之间的时间。 | TIMEVALUE(time_text) |
TODAY | 返回当前日期的系列数,系列数是 Microsoftexcel用于日期和时间计算的日期-时间代码。 | TODAY( ) |
WEEKDAY | 返回某日期为星期几。默认情况下,其值为 1(星期天)到 7(星期六)之间的整数。 | WEEKDAY(serial_number,return_type) |
WEEKNUM | 返回一个数字,该数字代表一年中的第几周。 | WEEKNUM(serial_num,return_type) |
WORKDAY | 返回某日期(起始日期)之前或之后相隔指定工作日的某一日期的日期值。工作日不包括周末和专门指定的假日。 | WORKDAY(start_date,days,holidays) |
YEAR | 返回某日期的年份。返回值为 1900 到 9999 之间的整数。 | YEAR(serial_number) |
YEARFRAC | 返回 start_date 和 end_date 之间的天数占全年天数的百分比。 | YEARFRAC(start_date,end_date,basis) |
[dvnews_page=excel函数应用之查询与引用函数]在介绍查询与引用函数之前,我们先来了解一下有关引用的知识。
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
语法形式为: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
函数 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
函数 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) 精确查找--根据区域最左列的值,对其它列的数据进行精确的查找
示例:创建工资表与工资条
首先建立员工工资表
相关阅读:
- 花卉园艺中级教程 (梦迪, 2008-5-07)
- EXCEL 数据分析 (czg118, 2008-5-30)
- excel的智能鼠标缩放功能你用了吗? (土豆烧牛肉, 2009-1-09)
- 白酒检验记录(EXCEL半自动处理) (吃亏是福, 2009-1-15)
- excel公式应用大全 (beijingaoyun, 2009-3-12)
- EXCEL快速计算,统计 (beijingaoyun, 2009-3-12)