7.位次阈值统计.................................................................................................................................................... 46
五、函数应用案例──管理计算................................................................................................................................ 46
1.授课日数............................................................................................................................................................ 46
2.折旧值计算........................................................................................................................................................ 46
3.客流均衡度计算................................................................................................................................................ 47
4.销售额预测........................................................................................................................................................ 47
5.客流与营业额的相关分析................................................................................................................................ 47
10
一、函数应用基础
(一)函数和公式
1.什么是函数
Excel 函数即是预先定义,执行计算、分析等处理数据任
务的特殊公式。以常用的求和函数SUM 为例,它的语法是
“SUM(number1,number2,......)”。其中“SUM”称为函数名
称,一个函数只有唯一的一个名称,它决定了函数的功能和用
途。函数名称后紧跟左括号,接着是用逗号分隔的称为参数的
内容,最后用一个右括号表示函数结束。
参数是函数中最复杂的组成部分,它规定了函数的运算对
象、顺序或结构等。使得用户可以对某个单元格或区域进行处
理,如分析存款利息、确定成绩名次、计算三角函数值等。
按照函数的来源,Excel函数可以分为内置函数和扩展函
数两大类。前者只要启动了Excel,用户就可以使用它们;而
后者必须通过单击“工具→加载宏”菜单命令加载,然后才能
像内置函数那样使用。
2.什么是公式
函数与公式既有区别又互相联系。如果说前者是Excel
预先定义好的特殊公式,后者就是由用户自行设计对工作表进
行计算和处理的公式。以公式“=SUM(E1:H1)*A1+26”为例,
它要以等号“=”开始,其内部可以包括函数、引用、运算符
和常量。上式中的“SUM(E1:H1)”是函数,“A1”则是对单元
格A1的引用(使用其中存储的数据),“26”则是常量,“*”
和“+”则是算术运算符(另外还有比较运算符、文本运算符和
引用运算符)。
如果函数要以公式的形式出现,它必须有两个组成部分,
一个是函数名称前面的等号,另一个则是函数本身。
(二)函数的参数
函数右边括号中的部分称为参数,假如一个函数可以使用
多个参数,那么参数与参数之间使用半角逗号进行分隔。参数
可以是常量(数字和文本)、逻辑值(例如TRUE 或FALSE)、数
组、错误值(例如#N/A)或单元格引用(例如E1:H1),甚至可以
是另一个或几个函数等。参数的类型和位置必须满足函数语法
的要求,否则将返回错误信息。
1.常量
常量是直接输入到单元格或公式中的数字或文本,或由名
称所代表的数字或文本值,例如数字“2890.56”、日期
“2003-8-19”和文本“黎明”都是常量。但是公式或由公式
计算出的结果都不是常量,因为只要公式的参数发生了变化,
它自身或计算出来的结果就会发生变化。
2.逻辑值
逻辑值是比较特殊的一类参数,它只有TRUE(真)或
FALSE(假)两种类型。例如在公式“=IF(A3=0,"",A2/A3)”中,
“A3=0”就是一个可以返回TRUE(真)或FALSE(假)两种结果
的参数。当“A3=0”为TRUE(真)时在公式所在单元格中填入
“0”,否则在单元格中填入“A2/A3”的计算结果。
3.数组
数组用于可产生多个结果,或可以对存放在行和列中的一
组参数进行计算的公式。Excel 中有常量和区域两类数组。前
者放在“{}”(按下Ctrl+Shift+Enter 组合键自动生成)内
部,而且内部各列的数值要用逗号“,”隔开,各行的数值要
用分号“;”隔开。假如你要表示第1 行中的56、78、89和第
2 行中的90、76、80,就应该建立一个2 行3 列的常量数组
“{56,78,89;90,76,80}。
区域数组是一个矩形的单元格区域,该区域中的单元格共
用一个公式。例如公式“=TREND(B1:B3,A1:A3)”作为数组公
式使用时,它所引用的矩形单元格区域“B1:B3,A1:A3”就是
一个区域数组。
4.错误值
使用错误值作为参数的主要是信息函数,例如
“ERROR.TYPE”函数就是以错误值作为参数。它的语法为
“ERROR.TYPE(error_val)”,如果其中的参数是#NUM!,则返
回数值“6”。
5.单元格引用
单元格引用是函数中最常见的参数,引用的目的在于标识
工作表单元格或单元格区域,并指明公式或函数所使用的数据
的位置,便于它们使用工作表各处的数据,或者在多个函数中
使用同一个单元格的数据。还可以引用同一工作簿不同工作表
的单元格,甚至引用其他工作簿中的数据。
根据公式所在单元格的位置发生变化时,单元格引用的变
化情况,我们可以引用分为相对引用、绝对引用和混合引用三
种类型。以存放在F2 单元格中的公式“=SUM(A2:E2)”为例,
当公式由F2 单元格复制到F3 单元格以后,公式中的引用也会
变化为“=SUM(A3:E3)”。若公式自F 列向下继续复制,“行
标”每增加1 行,公式中的行标也自动加1。
如果上述公式改为“=SUM($A $3:$E $3)”,则无论公式
复制到何处,其引用的位置始终是“A3:E3”区域。
1
混合引用有“绝对列和相对行”,或是“绝对行和相对
列”两种形式。前者如“=SUM($A3:$E3)”,后者如
“=SUM(A$3:E$3)”。
上面的几个实例引用的都是同一工作表中的数据,如果要
分析同一工作簿中多张工作表上的数据,就要使用三维引用。
假如公式放在工作表Sheet1的C6 单元格,要引用工作表
Sheet2 的“A1:A6”和Sheet3 的“B2:B9”区域进行求和运
算,则公式中的引用形式为
“=SUM(Sheet2!A1:A6,Sheet3!B2:B9)”。也就是说三维引用
中不仅包含单元格或区域引用,还要在前面加上带“!”的工
作表名称。
假如你要引用的数据来自另一个工作簿,如工作簿Book1
中的SUM 函数要绝对引用工作簿Book2 中的数据,其公式为
“=SUM([Book2]Sheet1! SA S1: SA S8,[Book2]Sheet2! SB S1:
SB S9)”,也就是在原来单元格引用的前面加上
“[Book2]Sheet1!”。放在中括号里面的是工作簿名称,带
“!”的则是其中的工作表名称。即是跨工作簿引用单元格或
区域时,引用对象的前面必须用“!”作为工作表分隔符,再
用中括号作为工作簿分隔符。不过三维引用的要受到较多的限
制,例如不能使用数组公式等。
提示:上面介绍的是Excel默认的引用方式,称为“A1
引用样式”。如果你要计算处在“宏”内的行和列,必须使用
“R1C1 引用样式”。在这种引用样式中,Excel使用“R”加
“行标”和“C”加“列标”的方法指示单元格位置。启用或
关闭R1C1引用样式必须单击“工具→选项”菜单命令,打开
对话框的“常规”选项卡,选中或清除“设置”下的“R1C1
引用样式”选项。由于这种引用样式很少使用,限于篇幅本文
不做进一步介绍。
6.嵌套函数
除了上面介绍的情况外,函数也可以是嵌套的,即一个函
数是另一个函数的参数,例如“=IF(OR(RIGHTB(E2,1)="1",
RIGHTB(E2,1)="3",RIGHTB(E2,1)="5",RIGHTB(E2,1)="7",
RIGHTB(E2,1)="9"),"男","女")”。其中公式中的IF 函数使
用了嵌套的RIGHTB 函数,并将后者返回的结果作为IF的逻辑
判断依据。
7.名称和标志
为了更加直观地标识单元格或单元格区域,我们可以给它
们赋予一个名称,从而在公式或函数中直接引用。例如
“B2:B46”区域存放着学生的物理成绩,求解平均分的公式一
般是“=AVERAGE(B2:B46)”。在给B2:B46 区域命名为“物理
分数”以后,该公式就可以变为“=AVERAGE(物理分数)”,从
而使公式变得更加直观。
给一个单元格或区域命名的方法是:选中要命名的单元格
或单元格区域,鼠标单击编辑栏顶端的“名称框”,在其中输
入名称后回车。也可以选中要命名的单元格或单元格区域,单
击“插入→名称→定义”菜单命令,在打开的“定义名称”对
话框中输入名称后确定即可。如果你要删除已经命名的区域,
可以按相同方法打开“定义名称”对话框,选中你要删除的名
称删除即可。
由于Excel工作表多数带有“列标志”。例如一张成绩统
计表的首行通常带有“序号”、“姓名”、“数学”、“物理”
等“列标志”(也可以称为字段),如果单击“工具→选项”菜
单命令,在打开的对话框中单击“重新计算”选项卡,选中
“工作簿选项”选项组中的“接受公式标志”选项,公式就可
以直接引用“列标志”了。例如“B2:B46”区域存放着学生的
物理成绩,而B1 单元格已经输入了“物理”字样,则求物理
平均分的公式可以写成“=AVERAGE(物理)”。
需要特别说明的是,创建好的名称可以被所有工作表引
用,而且引用时不需要在名称前面添加工作表名(这就是使用
名称的主要优点),因此名称引用实际上是一种绝对引用。但
是公式引用“列标志”时的限制较多,它只能在当前数据列的
下方引用,不能跨越工作表引用,但是引用“列标志”的公式
在一定条件下可以复制。从本质上讲,名称和标志都是单元格
引用的一种方式。因为它们不是文本,使用时名称和标志都不
能添加引号。
(三)函数输入方法
对Excel 公式而言,函数是其中的主要组成部分,因此公
式输入可以归结为函数输入的问题。
1.“插入函数”对话框
“插入函数”对话框是Excel 输入公式的重要工具,以公
式“=SUM(Sheet2!A1:A6,Sheet3!B2:B9)”为例,Excel输入
该公式的具体过程是:
首先选中存放计算结果(即需要应用公式)的单元格,单击
编辑栏(或工具栏)中的“fx”按钮,则表示公式开始的“=”
出现在单元格和编辑栏,然后在打开的“插入函数”对话框中
的“选择函数”列表找到“SUM”函数。如果你需要的函数不
在里面,可以打开“或选择类别”下拉列表进行选择。最后单
击“确定”按钮,打开“函数参数”对话框。
对SUM 函数而言,它可以使用从number1 开始直到
number30共30 个参数。对上面的公式来说,首先应当把光标
放在对话框的“number1”框中,单击工作簿中的“Sheet2!”
工作表标签,“Sheet2!”即可自动进入其中,接着鼠标拖动
选中你要引用的区域即可。接着用鼠标单击对话框的
“number2”框,单击工作簿中的“Sheet3!”工作表标签,其
2
名称“Sheet3!”即可自动进入其中,再按相同方法选择要引
用的单元格区域即可。
上述方法的最大优点就是引用的区域很准确,特别是三维
引用时不容易发生工作表或工作簿名称输入错误的问题。
2.编辑栏输入
如果你要套用某个现成公式,或者输入一些嵌套关系复杂
的公式,利用编辑栏输入更加快捷。
首先选中存放计算结果的单元格;鼠标单击Excel 编辑
栏,按照公式的组成顺序依次输入各个部分,公式输入完毕后,
单击编辑栏中的“输入”(即“√”)按钮(或回车)即可。
手工输入时同样可以采取上面介绍的方法引用区域,以公
式“=SUM(Sheet2!A1:A6,Sheet3!B2:B9)”为例,你可以先在
编辑栏中输入“=SUM()”,然后将光标插入括号中间,再按上
面介绍的方法操作就可以引用输入公式了。但是分隔引用之间
的逗号必须用手工输入,而不能像“插入函数”对话框那样自
动添加。
在《电脑报2003 年合订本附赠光盘》相应文章中,我们
列出了所有Excel 2003函数,供读者速查。
二、函数速查一览
(一)数据库函数
1.DAVERAGE
用途:返回数据库或数据清单中满足指定条件的列中数值
的平均值。
语法:DAVERAGE(database,field,criteria)
参数:Database构成列表或数据库的单元格区域。Field
指定函数所使用的数据列。Criteria为一组包含给定条件的
单元格区域。
2.DCOUNT
用途:返回数据库或数据清单的指定字段中,满足给定条
件并且包含数字的单元格数目。
语法:DCOUNT(database,field,criteria)
参数:Database构成列表或数据库的单元格区域。Field
指定函数所使用的数据列。Criteria为一组包含给定条件的
单元格区域。
3.DCOUNTA
用途:返回数据库或数据清单指定字段中满足给定条件的
非空单元格数目。
语法:DCOUNTA(database,field,criteria)
参数:Database构成列表或数据库的单元格区域。Field
指定函数所使用的数据列。Criteria为一组包含给定条件的
单元格区域。
4.DGET
用途:从数据清单或数据库中提取符合指定条件的单个
值。
语法:DGET(database,field,criteria)
参数:Database构成列表或数据库的单元格区域。Field
指定函数所使用的数据列。Criteria为一组包含给定条件的
单元格区域。
5.DMAX
用途:返回数据清单或数据库的指定列中,满足给定条件
单元格中的最大数值。
语法:DMAX(database,field,criteria)
参数:Database构成列表或数据库的单元格区域。Field
指定函数所使用的数据列。Criteria为一组包含给定条件的
单元格区域。
6.DMIN
用途:返回数据清单或数据库的指定列中满足给定条件的
单元格中的最小数字。
语法:DMIN(database,field,criteria)
参数:Database构成列表或数据库的单元格区域。Field
指定函数所使用的数据列。Criteria为一组包含给定条件的
单元格区域。
7.DPRODUCT
用途:返回数据清单或数据库的指定列中,满足给定条件
单元格中数值乘积。
语法:DPRODUCT(database,field,criteria)
参数:同上
8.DSTDEV
用途:将列表或数据库的列中满足指定条件的数字作为一
个样本,估算样本总体的标准偏差。
语法:DSTDEV(database,field,criteria)
参数:同上
3
9.DSTDEVP
参数:将数据清单或数据库的指定列中,满足给定条件单
元格中的数字作为样本总体,计算总体的标准偏差。
语法:DSTDEVP(database,field,criteria)
参数:同上
10.DSUM
用途:返回数据清单或数据库的指定列中,满足给定条件
单元格中的数字之和。
语法:DSUM(database,field,criteria)
参数:同上
11.DVAR
用途:将数据清单或数据库的指定列中满足给定条件单元
格中的数字作为一个样本,估算样本总体的方差。
语法:DVAR(database,field,criteria)
参数:同上
12.DVARP
用途:将数据清单或数据库的指定列中满足给定条件单元
格中的数字作为样本总体,计算总体的方差。
语法:DVARP(database,field,criteria)
参数:同上
13.GETPIVOTDATA
用途:返回存储在数据透视表报表中的数据。如果报表中
的汇总数据可见,则可以使用函数GETPIVOTDATA 从数据透视
表报表中检索汇总数据。
语法:GETPIVOTDATA(pivot_table,name)
参数:Data_field为包含要检索的数据的数据字段的名
称(放在引号中)。Pivot_table在数据透视表中对任何单元
格、单元格区域或定义的单元格区域的引用,该信息用于决定
哪个数据数据透视表包含要检索的数据。Field1,Item1,
Field2,Item2为1到14对用于描述检索数据的字段名和项
名称,可以任意次序排列。
(二)日期与时间函数
1.DATE
用途:返回代表特定日期的序列号。
语法:DATE(year,month,day)
参数:year为一到四位,根据使用的日期系统解释该参
数。默认情况下,Excel for Windows使用1900日期系统,
而Excel for Macintosh使用1904日期系统。Month代表每
年中月份的数字。如果所输入的月份大于12,将从指定年份
的一月份执行加法运算。Day代表在该月份中第几天的数字。
如果 day 大于该月份的最大天数时,将从指定月份的第一天
开始往上累加。
注意:Excel 按顺序的序列号保存日期,这样就可以对其
进行计算。如果工作簿使用的是1900 日期系统,则Excel会
将1900 年1 月1 日保存为序列号1。同理,会将1998 年1 月
1 日保存为序列号35796,因为该日期距离1900 年1 月1 日为
35795 天。
实例:如果采用1900 日期系统(Excel默认),则公式
“=DATE(2001,1,1)”返回36892。
2.DATEVALUE
用途:返回date_text所表示的日期的序列号。该函数的
主要用途是将文字表示的日期转换成一个序列号。
语法:DATEVALUE(date_text)
参数:Date_text是用Excel日期格式表示日期的文本。
在使用1900 日期系统中,date_text必须是1900 年1 月1日
到9999年12月31日之间的一个日期;而在1904日期系统中,
date_text必须是1904年1月1日到9999年12月31日之间
的一个日期。如果date_text超出上述范围,则函数DATEVALUE
返回错误值#VALUE!。
如果省略参数date_text 中的年代,则函数DATEVALUE
使用电脑系统内部时钟的当前年代,且date_text中的时间信
息将被忽略。
实例:公式“=DATEVALUE("2001/3/5")”返回36955,
DATEVALUE("2-26")返回36948。
3.DAY
用途:返回用序列号(整数1 到31)表示的某日期的天数,
用整数 1 到 31 表示。
语法:DAY(serial_number)
参数:Serial_number 是要查找的天数日期,它有多种输
入方式:带引号的文本串(如"1998/01/30")、序列号(如1900
日期系统的35825表示 的1998年1月30日),以及其他公式
或函数的结果(如DATEVALUE("1998/1/30"))。
实例:公式“=DAY("2001/1/27")”返回27,=DAY(35825)
返回30,=DAY(DATEVALUE("2001/1/25"))返回25。
4
4.DAYS360
用途:按照一年360 天的算法(每个月30 天,一年共计
12 个月),返回两日期间相差的天数。
语法:DAYS360(start_date,end_date,method)
参数:Start_date 和end_date 是用于计算期间天数的起
止日期。如果start_date 在end_date之后,则DAYS360将返
回一个负数。日期可以有多种输入方式:带引号的文本串(例
如:"1998/01/30")、序列号(例如:如果使用1900 日期系统,
则35825表示1998年1月30日)或其他公式或函数的结果(例
如,DATEVALUE("1998/1/30"))。
Method是一个逻辑值,它指定了在计算中是采用欧洲方
法还是美国方法。若为FALSE 或忽略,则采用美国方法(如果
起始日期是一个月的31 日,则等于同月的30日。如果终止日
期是一个月的31 日,并且起始日期早于30 日,则终止日期等
于下一个月的1日,否则,终止日期等于本月的30日)。 若
为TRUE 则采用欧洲方法(无论是起始日期还是终止日期为一
个月的 31 号,都将等于本月的 30 号)。
实例:公式“=DAYS360("1998/2/1","2001/2-1")”返回
1080。
5.EDATE
用途:返回指定日期(start_date)之前或之后指定月份的
日期序列号。
语法:EDATE(start_date,months)
参数:Start_date参数代表开始日期,它有多种输入方
式:带引号的文本串(例如:"1998/01/30")、序列号(如35825
表示1998 年1 月30 日)或其他公式或函数的结果(例如:
DATEVALUE("1998/1/30"))。Months 为在start_date之前或
之后的月份数,未来日期用正数表示,过去日期用负数表示。
实例:公式“=EDATE("2001/3/5",2)”返回37016即2001
年5 月5 日,=EDATE("2001/3/5",-6)返回36774 即2000 年
9月5日。
6.EOMONTH
用途:返回start-date 之前或之后指定月份中最后一天
的序列号。
语法:EOMONTH(start_date,months)
参数:Start_date参数代表开始日期,它有多种输入方
式:带引号的文本串(如"1998/01/30")、序列号(如1900 日期
系统中的35825)或其他公式或函数的结果(如
DATEVALUE("1998/1/30"))。Month 为start_date 之前或之后
的月份数,正数表示未来日期,负数表示过去日期。
实例:公式“=EOMONTH("2001/01/01",2)”返回36981
即2001年3月31日,=EOMONTH("2001/01/01",-6)返回36738
即2000 年7 月31日。
7.HOUR
用途:返回时间值的小时数。即介于0(12:00 A.M.)到
23(11:00 P.M.) 之间的一个整数。
语法:HOUR(serial_number)
参数:Serial_number 表示一个时间值,其中包含着要返
回的小时数。它有多种输入方式:带引号的文本串(如"6:45
PM")、十进制数(如0.78125 表示6:45PM)或其他公式或函数
的结果(如TIMEVALUE("6:45 PM"))。
实例:公式“=HOUR("3:30:30 PM")”返回15,=HOUR(0.5)
返回12即12:00:00 AM,=HOUR(29747.7)返回16。
8.MINUTE
用途:返回时间值中的分钟,即介于0到59之间的一个
整数。
语法:MINUTE(serial_number)
参数:Serial_number 是一个时间值,其中包含着要查找
的分钟数。时间有多种输入方式:带引号的文本串(如"6:45
PM")、十进制数(如 0.78125表示6:45 PM)或其他公式或函数
的结果(如TIMEVALUE("6:45 PM"))。
实例:公式“=MINUTE("15:30:00")”返回30,
=MINUTE(0.06)返回26,=MINUTE(TIMEVALUE("9:45 PM"))返
回45。
9.MONTH
用途:返回以序列号表示的日期中的月份,它是介于 1(一
月)和12(十二月)之间的整数。
语法:MONTH(serial_number)
参数:Serial_number 表示一个日期值,其中包含着要查
找的月份。日期有多种输入方式:带引号的文本串(如
"1998/01/30")、序列号(如表示1998 年1 月30日的35825)
或其他公式或函数的结果(如DATEVALUE("1998/1/30"))等。
实例:公式“=MONTH("2001/02/24")”返回2,
=MONTH(35825)返回1,=MONTH(DATEVALUE("2000/6/30"))返
回6。
10.NETWORKDAYS
用途:返回参数start-data 和end-data 之间完整的工作
日(不包括周末和专门指定的假期)数值。
语法:NETWORKDAYS(start_date,end_date,holidays)
5
参数:Start_date代表开始日期,End_date代表终止日;
Holidays 是表示不在工作日历中的一个或多个日期所构成的
可选区域,法定假日以及其他非法定假日。此数据清单可以是
包含日期的单元格区域,也可以是由代表日期的序列号所构成
的数组常量。
函数中的日期有多种输入方式:带引号的文本串(如
"1998/01/30")、序列号(如使用1900 日期系统的35825)或其
他公式或函数的结果(如 DATEVALUE("1998/1/30"))。
注意:该函数只有加载“分析工具库”以后方能使用。
11.NOW
用途:返回当前日期和时间所对应的序列号。
语法:NOW()
参数:无
实例:如果正在使用的是1900 日期系统,而且计算机的
内部时钟为 2001-1-28 12:53,则公式“=NOW()”返回
36919.54。
12.SECOND
用途:返回时间值的秒数(为0至59 之间的一个整数)。
语法:SECOND(serial_number)
参数:Serial_number 表示一个时间值,其中包含要查找
的秒数。关于时间的输入方式见上文的有关内容。
实例:公式“=SECOND("3:30:26 PM")”返回26,
=SECOND(0.016)返回2。
13.TIME
用途:返回某一特定时间的小数值,它返回的小数值从0
到 0.99999999之间,代表0:00:00(12:00:00 A.M)到
23:59:59(11:59:59 P.M) 之间的时间。
语法:TIME(hour,minute,second)
参数:Hour 是0 到23之间的数,代表小时;Minute 是0
到59 之间的数,代表分;Second是0 到59 之间的数,代表
秒。
实例:公式“=TIME(12,10,30)”返回序列号0.51,等
价于12:10:30 PM。=TIME(9,30,10)返回序列号0.40,等价
于9:30:10 AM。=TEXT(TIME(23,18,14),"h:mm:ss AM/PM")
返回“11:18:14 PM”。
14.TIMEVALUE
用途:返回用文本串表示的时间小数值。该小数值为从 0
到 0.999999999 的数值,代表从 0:00:00 (12:00:00 AM) 到
23:59:59 (11:59:59 PM) 之间的时间。
语法:TIMEVALUE(time_text)
参数:Time_text是一个用Excel 时间格式表示时间的文
本串(如"6:45 PM"和"18:45"等)。
实例:公式“=TIMEVALUE("3:30 AM")”返回
0.145833333,=TIMEVALUE("2001/1/26 6:35 AM")返回