张迎新 附录文章
一、函数应用基础
1.函数和公式
(1)什么是函数
Excel函数即是预先定义,执行计算、分析等处理数据任务的特殊公式。以常用的求和函数SUM为例,它的语法是“SUM(number1,number2,......)”。其中“SUM”称为函数名称,一个函数只有唯一的一个名称,它决定了函数的功能和用途。函数名称后紧跟左括号,接着是用逗号分隔的称为参数的内容,最后用一个右括号表示函数结束。
参数是函数中最复杂的组成部分,它规定了函数的运算对象、顺序或结构等。使得用户可以对某个单元格或区域进行处理,如分析存款利息、确定成绩名次、计算三角函数值等。
按照函数的来源,Excel函数可以分为内置函数和扩展函数两大类。前者只要启动了Excel,用户就可以使用它们;而后者必须通过单击“工具→加载宏”菜单命令加载,然后才能像内置函数那样使用。
(2)什么是公式
函数与公式既有区别又互相联系。如果说前者是Excel预先定义好的特殊公式,后者就是由用户自行设计对工作表进行计算和处理的公式。以公式“=SUM(E1:H1)*A1+26”为例,它要以等号“=”开始,其内部可以包括函数、引用、运算符和常量。上式中的“SUM(E1:H1)”是函数,“A1”则是对单元格A1的引用(使用其中存储的数据),“26”则是常量,“*”和“+”则是算术运算符(另外还有比较运算符、文本运算符和引用运算符)。
如果函数要以公式的形式出现,它必须有两个组成部分,一个是函数名称前面的等号,另一个则是函数本身。
2.函数的参数
函数右边括号中的部分称为参数,假如一个函数可以使用多个参数,那么参数与参数之间使用半角逗号进行分隔。参数可以是常量(数字和文本)、逻辑值(例如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”区域。
混合引用有“绝对列和相对行”,或是“绝对行和相对列”两种形式。前者如“=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(物理)”。
需要特别说明的是,创建好的名称可以被所有工作表引用,而且引用时不需要在名称前面添加工作表名(这就是使用名称的主要优点),因此名称引用实际上是一种绝对引用。但是公式引用“列标志”时的限制较多,它只能在当前数据列的下方引用,不能跨越工作表引用,但是引用“列标志”的公式在一定条件下可以复制。从本质上讲,名称和标志都是单元格引用的一种方式。因为它们不是文本,使用时名称和标志都不能添加引号。
3.函数输入方法
对Excel公式而言,函数是其中的主要组成部分,因此公式输入可以归结为函数输入的问题。
(1)“插入函数”对话框
“插入函数”对话框是Excel输入公式的重要工具,以公式“=SUM(Sheet2!A1:A6,Sheet3!B2:B9)”为例,Excel输入该公式的具体过程是:
首先选中存放计算结果(即需要应用公式)的单元格,单击编辑栏(或工具栏)中的“fx”按钮,则表示公式开始的“=”出现在单元格和编辑栏,然后在打开的“插入函数”对话框中的“选择函数”列表找到“SUM”函数。如果你需要的函数不在里面,可以打开“或选择类别”下拉列表进行选择。最后单击“确定”按钮,打开“函数参数”对话框。
对SUM函数而言,它可以使用从number1开始直到number30共30个参数。对上面的公式来说,首先应当把光标放在对话框的“number1”框中,单击工作簿中的“Sheet2!”工作表标签,“Sheet2!”即可自动进入其中,接着鼠标拖动选中你要引用的区域即可。接着用鼠标单击对话框的“number2”框,单击工作簿中的“Sheet3!”工作表标签,其名称“Sheet3!”即可自动进入其中,再按相同方法选择要引用的单元格区域即可。
上述方法的最大优点就是引用的区域很准确,特别是三维引用时不容易发生工作表或工作簿名称输入错误的问题。
(2)编辑栏输入
如果你要套用某个现成公式,或者输入一些嵌套关系复杂的公式,利用编辑栏输入更加快捷。
首先选中存放计算结果的单元格;鼠标单击Excel编辑栏,按照公式的组成顺序依次输入各个部分,公式输入完毕后,单击编辑栏中的“输入”(即“√”)按钮(或回车)即可。
手工输入时同样可以采取上面介绍的方法引用区域,以公式“=SUM(Sheet2!A1:A6,Sheet3!B2:B9)”为例,你可以先在编辑栏中输入“=SUM()”,然后将光标插入括号中间,再按上面介绍的方法操作就可以引用输入公式了。但是分隔引用之间的逗号必须用手工输入,而不能像“插入函数”对话框那样自动添加。
在《电脑报2003年合订本附赠光盘》相应文章中,我们列出了所有Excel 2003函数,供读者速查。
(二)日期与时间函数
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.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)
参数: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")返回0.274305556。
15.TODAY
用途:返回系统当前日期的序列号。
参数:无
语法:TODAY()
实例:公式“=TODAY()”返回2001-8-28(执行公式时的系统时间)。
16.WEEKDAY
用途:返回某日期的星期数。在默认情况下,它的值为1(星期天)到7(星期六)之间的一个整数。
语法:WEEKDAY(serial_number,return_type)
参数:Serial_number是要返回日期数的日期,它有多种输入方式:带引号的文本串(如"2001/02/26")、序列号(如35825表示1998年1月30日)或其他公式或函数的结果(如DATEvalue("2000/1/30"))。Return_type为确定返回值类型的数字,数字1或省略则1至7代表星期天到数星期六,数字2则1至7代表星期一到星期天,数字3则0至6代表星期一到星期天。
实例:公式“=WEEKDAY("2001/8/28",2)”返回2(星期二),=WEEKDAY("2003/02/23",3)返回6(星期日)。
17.WEEKNUM
用途:返回一个数字,该数字代表一年中的第几周。
语法:WEEKNUM(serial_num,return_type)
参数:Serial_num代表一周中的日期。应使用DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。Return_type为一数字,确定星期计算从哪一天开始。默认值为 1。
18.WORKDAY
用途:返回某日期(起始日期)之前或之后相隔指定工作日(不包括周末和专门指定的假日)的某一日期的值,并扣除周末或假日。
语法:WORKDAY(start_date,days,holidays)
参数:Start_date为开始日期;Days为Start_date之前或之后不含周末及节假日的天数;Days是正值将产生未来日期、负值产生过去日期;Holidays为可选的数据清单,表示需要从工作日历中排除的日期值(如法定假日或非法定假日)。此清单可以是包含日期的单元格区域,也可以是由代表日期的序列号所构成的数组常量。日期有多种输入方式:带引号的文本串(如"1998/01/30")、序列号(如1900 日期系统时的35825表示1998年1月30日)或其他公式或函数的结果(例如 DATEvalue("1998/1/30"))。
19.YEAR
用途:返回某日期的年份。其结果为1900到9999之间的一个整数。
语法:YEAR(serial_number)
参数:Serial_number是一个日期值,其中包含要查找的年份。日期有多种输入方式:带引号的文本串(例如 "1998/01/30")、序列号(例如,如果使用 1900 日期系统则 35825 表示 1998 年 1 月 30 日)或其他公式或函数的结果(例如 DATEvalue("1998/1/30"))。
实例:公式“=YEAR("2000/8/6")返回2000”,=YEAR("2003/05/01")返回2003,=YEAR(35825)返回1998。
20.YEARFRAC
用途:返回start_date和end_date之间的天数占全年天数的百分比。
语法:YEARFRAC(start_date,end_date,basis)
参数:Start_date表示开始日期,End_date代表结束日期。函数中的日期有多种输入方式:带引号的文本串(如"1998/01/30")、序列号(如35829表示1900 日期系统中的1998年1月30日),或其他公式或函数的结果(例如DATEvalue("1998/1/30"))。Basis表示日计数基准类型,其中0或省略为US(NASD)30/360,1实际天数/实际天数,2实际天数/360,3实际天数/365,4欧洲30/360。
实例:公式“=YEARFRAC("2001/01/31","2001/06/30",0)”返回0.416666667,YEARFRAC("2001/01/25","2001/09/27")返回0.67222。
13.DELTA
用途:测试两个数值是否相等。如果 number1=number2,则返回1,否则返回0。
语法:DELTA(number1,number2)
参数:Number1为第一个参数。Number2为第二个参数。如果省略,假设Number2的值为零。
(六)信息函数
1.CELL
用途:返回某一引用区域的左上角单元格的格式、位置或内容等信息,该函数主要用于保持与其它电子表格程序的兼容性。
语法:CELL(info_type,reference)
参数:Info_type为一个文本值,指明所需要的单元格信息的类型。Reference表示要获取其有关信息的单元格。如果忽略,则在info_type中所指定的信息将返回给最后更改的单元格。
实例:公式“=CELL("row",A20)”返回20,如果A3单元格包含TOTAL,则CELL("contents",A3)返回"TOTAL"。
2.ERROR.TYPE
用途:返回对应于某一错误类型的数字,如果没有错误则返回#N/A。在IF函数中可以使用ERROR.TYPE检测错误值,并返回文字串(如“发生错误”)来取代错误值。
语法:ERROR.TYPE(error_val)
参数:Error_val为需要得到其数字代码的一个错误类型。尽管error_val可以是实际的错误值,但它通常为一个单元格引用,而此单元格中包含需要检测的公式。
注意:ERROR.TYPE函数返回的错误代码是:#NULL!返回1,#DIV/0!返回2,#value!返回3,#REF!返回4,#NAME?返回5,#NUM!返回6,#N/A返回7,其他错误则返回#N/A。
实例:如果A5=36/0,则公式“=ERROR.TYPE(A5)”返回2。
3.INFO
用途:返回有关当前操作环境的的信息。
语法:INFO(type_text)
参数:Type_text是一文本,指明所要返回的信息类型。其中"directory"返回当前目录或文件夹的路径,"memavail"返回可用的内存空间(以字节为单位),"memused"返回数据占用的内存空间,"numfile"返回当前所有打开的工作表的数目,"osversion"返回当前操作系统的版本号(文本),"recalc"返回当前的重计算方式(“自动”或“人工”),"release"返回Excel的版本号(文本),"system"返回操作系统名称(Macintosh="mac",Windows="pcdos"),"totmem"返回全部内存空间,包括已经占用的内存空间(以字节为单位)。
注意:INFO函数中的文本参数必须用西文引号引起来。
实例:公式“=INFO("osversion")”返回“Windows(32-bit)4.90”,=INFO("memavail")返回1048576。
4.IS类函数
用途:其中包括用来检验数值或引用类型的九个工作表函数。它们可以检验数值的类型并根据参数的值返回TRUE或FALSE。例如,数值为空白单元格引用时,ISBLANK函数返回逻辑值TRUE,否则返回FALSE。
语法:ISBLANK(value)、ISERR(value)、ISERROR(value)、ISLOGICAL(value)、ISNA(value)、ISNONTEXT(value)、ISNUMBER(value)、ISREF(value)、ISTEXT(value)。
参数:value是需要进行检验的参数。分别为空白(空白单元格)、错误值、逻辑值、文本、数字、引用值或对于以上任意参数的名称引用。
如果函数中的参数为下面的内容,则返回TRUE:ISBLANK的参数是空白单元格,ISERR的参数是任意错误值(除去#N/A),ISERROR的参数是任意错误值(#N/A、#value!、#REF!、#DIV/0!、#NUM!、#NAME?或#NULL!),ISLOGICAL的参数是逻辑值,ISNA的参数是错误值#N/A,ISNONTEXT的参数是任意不是文本的内容(此函数在值为空白单元格时返回TRUE),ISNUMBER的参数是数字,ISREF的参数是引用,ISTEXT的参数是文本。
注意:IS类函数的参数value是不可转换的。在其他大多数需要数字的函数中,文本"19"会被转换成数字19。然而在公式ISNUMBER("19")中,"19"并由文本值转换成其他类型的值,而是返回FALSE。
IS类函数用于检验公式计算结果十分有用,它与函数IF结合在一起可以提供一种在公式中查出错误值的方法。
实例:公式“=ISBLANK("")”返回FALSE,=ISREF(A5)返回TRUE(其中a5为空白单元格)。如果需要计算A1:A4区域的平均值,但不能确定单元格内是否包含数字,则公式AVERAGE(A1:A4)返回错误值#DIV/0!。为了应付这种情况,可以使用公式“=IF(ISERROR(AVERAGE(A1:A4)),"引用包含空白单元格",AVERAGE(A1:A4))”查出可能存在的错误。
5.ISEVEN
用途:测试参数的奇偶性,如果参数为偶数返回TRUE,否则返回FALSE。
语法:ISEVEN(number)
Number待测试的数值。如果参数值不是整数,则自动截去小数部分取整。
注意:该函数必须加载“分析工具库”方能使用。如果参数number不是数值,ISEVEN函数返回错误值#value!。
实例:公式“=ISEVEN(11)返回FALSE”,=ISEVEN(6)返回TRUE。
6.ISODD
用途:测试参数的奇偶性,如果参数为奇数返回TRUE,否则返回FALSE。
语法:ISODD(number)
参数:Number待测试的数值。如果参数不是整数,则自动截去小数部分取整。
注意:该函数必须加载“分析工具库”方能使用。
实例:公式“=ISODD(19)”返回TRUE,=ISODD(14.5)返回FALSE。
7.N
用途:返回转化为数值后的值。
语法:N(value)
参数:value为要转化的值。函数N可以转化下表列出的值:数字返回该数字,日期返回该日期的序列号,TRUE返回1,FALSE返回0,错误值(如#DIV/0!)返回该错误值,其他值返回0。
实例:如果A1包含"7",A2包含"文件",A3包含"TRUE",则公式“=N(A1)”返回7,=N(A2)返回0(因为A2含有文字),=N(A3)返回1(因为A3含有TRUE)。
8.NA
用途:返回错误值#N/A。#N/A表示“无法得到有效值”。如果使用#N/A标志空白单元格,可以避免不小心将空白单元格计算在内而产生的问题,因为公式引用含有#N/A的单元格时返回错误值#N/A。
语法:NA()
参数:空白单元格
实例:公式“=NA("")”返回#N/A。
9.TYPE
用途:返回数值的类型。当某一个函数的计算结果取决于特定单元格中数值的类型时,可使用函数TYPE。
语法:TYPE(value)
参数:value可以是Excel中的数据,如数字、文本、逻辑值等等。
如果value为数字返回1,是文本返回2,逻辑值返回4,错误值返回16,数组返回64。
实例:如果A1包含文本"金额",则公式“=TYPE(A1)”返回2。=TYPE(2+A1)返回16。
(七)逻辑运算符
1.AND
用途:所有参数的逻辑值为真时返回TRUE(真);只要有一个参数的逻辑值为假,则返回FALSE(假)。
语法:AND(logical1,logical2,…)。
参数:Logical1,logical2,…为待检验的1~30个逻辑表达式,它们的结论或为TRUE(真)或为FALSE(假)。参数必须是逻辑值或者包含逻辑值的数组或引用,如果数组或引用内含有文字或空白单元格,则忽略它的值。如果指定的单元格区域内包括非逻辑值,AND将返回错误值#value!。
实例:如果A1=2、A=6,那么公式“=AND(A1A2)”返回FALSE。如果B4=104,那么公式“=IF(AND(1<B4,B4< p>
2.FALSE
用途:返回逻辑值FALSE。
语法:FALSE()
参数:该函数不需要参数
实例:如果在A1单元格内输入公式“=FALSE()”,回车后即可返回FALSE。若在单元格或公式中输入文字FALSE,Excel会自动将它解释成逻辑值FALSE。
3.IF
用途:执行逻辑判断,它可以根据逻辑表达式的真假,返回不同的结果,从而执行数值或公式的条件检测任务。
语法:IF(logical_test,value_if_true,value_if_false)。
参数:Logical_test计算结果为TRUE或FALSE的任何数值或表达式;value_if_true是Logical_test为TRUE时函数的返回值,如果logical_test为TRUE并且省略了value_if_true,则返回TRUE。而且value_if_true可以是一个表达式;value_if_false是Logical_test为FALSE时函数的返回值。如果logical_test为FALSE并且省略value_if_false,则返回FALSE。value_if_false也可以是一个表达式。
实例:公式“=IF(C2>=85,"A",IF(C2>=70,"B",IF(C2>=60,"C",IF(C2<60,"D"))))”,其中第二个IF语句同时也是第一个IF语句的参数。同样,第三个IF语句是第二个IF语句的参数,以此类推。例如,若第一个逻辑判断表达式C2>=85成立,则D2单元格被赋值“A”;如果第一个逻辑判断表达式C2>=85不成立,则计算第二个IF语句“IF(C2>=70”;以此类推直至计算结束,该函数广泛用于需要进行逻辑判断的场合。
4.NOT
用途:求出一个逻辑值或逻辑表达式的相反值。如果您要确保一个逻辑值等于其相反值,就应该使用NOT函数。
语法:NOT(logical)
参数:Logical是一个可以得出TRUE或FALSE结论的逻辑值或逻辑表达式。如果逻辑值或表达式的结果为FALSE,则NOT函数返回TRUE;如果逻辑值或表达式的结果为TRUE,那么NOT函数返回的结果为FALSE。
实例:如果A1=6、A2=8,那么公式“=NOT(A1< p>
5.OR
用途:所有参数中的任意一个逻辑值为真时即返回TRUE(真)。
语法:OR(logical1,logical2,...)
参数:Logical1,logical2,...是需要进行检验的1至30个逻辑表达式,其结论分别为TRUE或FALSE。如果数组或引用的参数包含文本、数字或空白单元格,它们将被忽略。如果指定的区域中不包含逻辑值,OR函数将返回错误#value!。
实例:如果A1=6、A2=8,则公式“=OR(A1+A2>A2,A1=A2)”返回TRUE;而公式“=OR(A1>A2,A1=A2)”返回FALSE。
6.TRUE
用途:返回逻辑值TRUE。
语法:TRUE()
参数:该函数不需要参数
实例:如果在A1单元格内输入公式“=TRUE()”,回车后即可返回TRUE。若在单元格或公式中输入文字TRUE,Excel会自动将它解释成逻辑值TRUE。函数TRUE主要用于与其它电子表格程序兼容。
(八)查找和引用函数
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(1,4,4,1)”返回D1。
2.AREAS
用途:返回引用中包含的区域个数。
语法:AREAS(reference)。
参数:Reference是对某一单元格或单元格区域的引用,也可以引用多个区域。
注意:如果需要将几个引用指定为一个参数,则必须用括号括起来,以免Excel将逗号作为参数间的分隔符。
实例:公式“=AREAS(a2:b4)”返回1,=AREAS((A1:A3,A4:A6,B4:B7,A16:A18))返回4。
3.CHOOSE
用途:可以根据给定的索引值,从多达29个待选参数中选出相应的值或操作。
语法:CHOOSE(index_num,value1,value2,...)。
参数:Index_num是用来指明待选参数序号的值,它必须是1到29之间的数字、或者是包含数字1到29的公式或单元格引用;value1,value2,...为1到29个数值参数,可以是数字、单元格,已定义的名称、公式、函数或文本。
实例:公式“=CHOOSE(2,"电脑","爱好者")返回“爱好者”。公式“=SUM(A1:CHOOSE(3,A10,A20,A30))”与公式“=SUM(A1:A30)”等价(因为CHOOSE(3,A10,A20,A30)返回A30)。
4.COLUMN
用途:返回给定引用的列标。
语法:COLUMN(reference)。
参数:Reference为需要得到其列标的单元格或单元格区域。如果省略reference,则假定函数COLUMN是对所在单元格的引用。如果reference为一个单元格区域,并且函数COLUMN作为水平数组输入,则COLUMN函数将reference中的列标以水平数组的形式返回。
实例:公式“=COLUMN(A3)”返回1,=COLUMN(B3:C5)返回2。
5.COLUMNS
用途:返回数组或引用的列数。
语法:COLUMNS(array)。
参数:Array为需要得到其列数的数组、数组公式或对单元格区域的引用。
实例:公式“=COLUMNS(B1:C4)”返回2,=COLUMNS({5,4;4,5})返回2。
6.HLOOKUP
用途:在表格或数值数组的首行查找指定的数值,并由此返回表格或数组当前列中指定行处的数值。
语法:HLOOKUP(lookup_value,table_array,row_index_num,range_lookup)
参数:Lookup_value是需要在数据表第一行中查找的数值,它可以是数值、引用或文字串;Table_array是需要在其中查找数据的数据表,可以使用对区域或区域名称的引用,Table_array的第一行的数值可以是文本、数字或逻辑值。Row_index_num为table_array中待返回的匹配值的行序号。Range_lookup为一逻辑值,指明函数HLOOKUP查找时是精确匹配,还是近似匹配。
实例:如果A1:B3区域存放的数据为34、23、68、69、92、36,则公式“=HLOOKUP(34,A1:B3,1,FALSE)返回34;=HLOOKUP(3,{1,2,3;"a","b","c";"d","e","f"},2,TRUE)返回“c”。
7.HYPERLINK
用途:创建一个快捷方式,用以打开存储在网络服务器、Intranet(Internet)或本地硬盘的其它文件。
语法:HYPERLINK(link_location,friendly_name)
参数:Link_location是文件的路径和文件名,它还可以指向文档中的某个更为具体的位置,如Execl工作表或工作簿中特定的单元格或命名区域,或是指向Word文档中的书签。路径可以是存储在硬盘驱动器上的文件,或是Internet或Intranet上的URL路径;Friendly_name为单元格中显示的链接文字或数字,它用蓝色显示并带有下划线。如果省略了Friendly_name,单元格就将link_location显示为链接。
实例:HYPERLINK("http://www.mydrivers.com/","驱动之家")会在工作表中显示文本“驱动之家”,单击它即可连接到“http://www.mydrivers.com/”。公式“=HYPERLINK("D:\README.TXT","说明文件")”在工作表中建立一个的蓝色“说明文件”链接,单击它可以打开D盘上的README.TXT文件。
8.INDEX
用途:返回表格或区域中的数值或对数值的引用。函数INDEX()有两种形式:数组和引用。数组形式通常返回数值或数值数组;引用形式通常返回引用。
语法:INDEX(array,row_num,column_num)返回数组中指定的单元格或单元格数组的数值。INDEX(reference,row_num,column_num,area_num)返回引用中指定单元格或单元格区域的引用。
参数:Array为单元格区域或数组常数;Row_num为数组中某行的行序号,函数从该行返回数值。如果省略row_num,则必须有column_num;Column_num是数组中某列的列序号,函数从该列返回数值。如果省略column_num,则必须有row_num。Reference是对一个或多个单元格区域的引用,如果为引用输入一个不连续的选定区域,必须用括号括起来。Area_num是选择引用中的一个区域,并返回该区域中row_num和column_num的交叉区域。选中或输入的第一个区域序号为1,第二个为2,以此类推。如果省略area_num,则INDEX函数使用区域1。
实例:如果A1=68、A2=96、A3=90,则公式“=INDEX(A1:A3,1,1)”返回68,=INDEX(A1:A3,1,1,1)返回68。
9.INDIRECT
用途:返回由文字串指定的引用。此函数立即对引用进行计算,并显示其内容。当需要更改公式中单元格的引用,而不更改公式本身,即可使用INDIRECT函数。
语法:INDIRECT(ref_text,a1)。
参数:Ref_text是对单元格的引用,此单元格可以包含A1样式的引用、R1C1样式的引用、定义为引用的名称或对文字串单元格的引用;A1为一逻辑值,指明包含在单元格ref_text中的引用的类型。如果a1为TRUE或省略,ref_text被解释为A1-样式的引用。如果a1为FALSE,ref_text被解释为R1C1-样式的引用。
实例:如果单元格A1存放有文本B1,而B1单元格中存放了数值68.75,则公式“=INDIRECT($A)”返回68.75。
10.LOOKUP
用途:返回向量(单行区域或单列区域)或数组中的数值。该函数有两种语法形式:向量和数组,其向量形式是在单行区域或单列区域(向量)中查找数值,然后返回第二个单行区域或单列区域中相同位置的数值;其数组形式在数组的第一行或第一列查找指定的数值,然后返回数组的最后一行或最后一列中相同位置的数值。
语法1(向量形式):LOOKUP(lookup_value,lookup_vector,result_vector)
语法2(数组形式):LOOKUP(lookup_value,array)。
参数1(向量形式):Lookup_value为函数LOOKUP在第一个向量中所要查找的数值。Lookup_value可以为数字、文本、逻辑值或包含数值的名称或引用。Lookup_vector为只包含一行或一列的区域。Lookup_vector的数值可以为文本、数字或逻辑值。
参数2(数组形式):Lookup_value为函数LOOKUP在数组中所要查找的数值。Lookup_value可以为数字、文本、逻辑值或包含数值的名称或引用。如果函数LOOKUP找不到lookup_value,则使用数组中小于或等于lookup_value的最大数值。Array为包含文本、数字或逻辑值的单元格区域,它的值用于与lookup_value进行比较。
注意:Lookup_vector的数值必须按升序排列,否则LOOKUP函数不能返回正确的结果,参数中的文本不区分大小写。
实例:如果A1=68、A2=76、A3=85、A4=90,则公式“=LOOKUP(76,A1:A4)”返回2,=LOOKUP("bump",{"a",1;"b",2;"c",3})返回2。
11.MATCH
用途:返回在指定方式下与指定数值匹配的数组中元素的相应位置。如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用MATCH函数。
语法:MATCH(lookup_value,lookup_array,match_type)。
参数:Lookup_value为需要在数据表中查找的数值,它可以是数值(或数字、文本或逻辑值)、对数字、文本或逻辑值的单元格引用。Lookup_array是可能包含所要查找的数值的连续单元格区域,Lookup_array可以是数组或数组引用;Match_type为数字-1、0或1,它说明Excel如何在lookup_array中查找lookup_value。如果match_type为1,函数MATCH查找小于或等于lookup_value的最大数值。如果match_type为0,函数MATCH查找等于lookup_value的第一个数值。如果match_type为-1,函数MATCH查找大于或等于lookup_value的最小数值。
注意:MATCH函数返回lookup_array中目标值的位置,而不是数值本身。如果match_type为0且lookup_value为文本,lookup_value可以包含通配符(“*”和“?”)。星号可以匹配任何字符序列,问号可以匹配单个字符。
实例:如果A1=68、A2=76、A3=85、A4=90,则公式“=MATCH(90,A1:A5,0)”返回3。
12.OFFSET
用途:以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以是一个单元格或单元格区域,并可以指定返回的行数或列数。
语法:OFFSET(reference,rows,cols,height,width)。
参数:Reference是作为偏移量参照系的引用区域,它必须是单元格或相连单元格区域的引用;Rows是相对于偏移量参照系的左上角单元格,上(下)偏移的行数。如果使用5作为参数Rows,则说明目标引用区域的左上角单元格比reference低5行。行数可为正数(代表在起始引用的下方)或负数(代表在起始引用的上方);Cols是相对于偏移量参照系的左上角单元格,左(右)偏移的列数。如果使用5作为参数Cols,则说明目标引用区域的左上角的单元格比reference靠右5列。列数可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边);Height是要返回的引用区域的行数,Height必须为正数;Width是要返回的引用区域的列数,Width必须为正数。
实例:如果A1=68、A2=76、A3=85、A4=90,则公式“=SUM(OFFSET(A1:A2,2,0,2,1))”返回177。
13.ROW
用途:返回给定引用的行号。
语法:ROW(reference)。
Reference为需要得到其行号的单元格或单元格区域。
实例:公式“=ROW(A6)”返回6,如果在C5单元格中输入公式“=ROW()”,其计算结果为5。
14.ROWS
用途:返回引用或数组的行数。
语法:ROWS(array)。
参数:Array是需要得到其行数的数组、数组公式或对单元格区域的引用。
实例:公式“=ROWS(A1:A9)”返回9,=ROWS({1,2,3;4,5,6;1,2,3})返回3。
15.RTD
用途:从支持COM自动化的程序中返回实时数据。
语法:RTD(ProgID,server,topic1,[topic2],...)
参数:ProgID已安装在本地计算机中,经过注册的COM自动化加载宏的ProgID名称,该名称用引号引起来。Server是运行加载宏的服务器的名称。如果没有服务器,程序是在本地计算机上运行,那么该参数为空白。topic1,topic2,...为1到28个参数,这些参数放在一起代表一个唯一的实时数据。
16.TRANSPOSE
用途:返回区域的转置(所谓转置就是将数组的第一行作为新数组的第一列,数组的第二行作为新数组的第二列,以此类推)。
语法:TRANSPOSE(array)。
参数:Array是需要转置的数组或工作表中的单元格区域。
实例:如果A1=68、A2=76、B1=85、B2=90,那么公式“{=TRANSPOSE(A1:B1)}”返回C1=56、D1=98、C2=90、D2=87。
17.VLOOKUP
用途:在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。当比较值位于数据表首列时,可以使用函数VLOOKUP代替函数HLOOKUP。
语法:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
参数:Lookup_value为需要在数据表第一列中查找的数值,它可以是数值、引用或文字串。Table_array为需要在其中查找数据的数据表,可以使用对区域或区域名称的引用。Col_index_num为table_array中待返回的匹配值的列序号。Col_index_num为1时,返回table_array第一列中的数值;col_index_num为2,返回table_array第二列中的数值,以此类推。Range_lookup为一逻辑值,指明函数VLOOKUP返回时是精确匹配还是近似匹配。如果为TRUE或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于lookup_value的最大数值;如果range_value为FALSE,函数VLOOKUP将返回精确匹配值。如果找不到,则返回错误值#N/A。
实例:如果A1=23、A2=45、A3=50、A4=65,则公式“=VLOOKUP(50,A1:A4,1,TRUE)”返回50。
13.COUNTIF
用途:统计某一区域中符合条件的单元格数目。
语法:COUNTIF(range,criteria)
参数:range为需要统计的符合条件的单元格数目的区域;Criteria为参与计算的单元格条件,其形式可以为数字、表达式或文本(如36、">160"和"男"等)。其中数字可以直接写入,表达式和文本必须加引号。
实例:假设A1:A5区域内存放的文本分别为女、男、女、男、女,则公式“=COUNTIF(A1:A5,"女")”返回3。
(十)统计函数
1.AVEDEV
用途:返回一组数据与其平均值的绝对偏差的平均值,该函数可以评测数据(例如学生的某科考试成绩)的离散度。
语法:AVEDEV(number1,number2,...)
参数:Number1、number2、...是用来计算绝对偏差平均值的一组参数,其个数可以在1~30个之间。
实例:如果A1=79、A2=62、A3=45、A4=90、A5=25,则公式“=AVEDEV(A1:A5)”返回20.16。
2.AVERAGE
用途:计算所有参数的算术平均值。
语法:AVERAGE(number1,number2,...)。
参数:Number1、number2、...是要计算平均值的1~30个参数。
实例:如果A1:A5区域命名为分数,其中的数值分别为100、70、92、47和82,则公式“=AVERAGE(分数)”返回78.2。
3.AVERAGEA
用途:计算参数清单中数值的平均值。它与AVERAGE函数的区别在于不仅数字,而且文本和逻辑值(如TRUE和FALSE)也参与计算。
语法:AVERAGEA(value1,value2,...)
参数:value1、value2、...为需要计算平均值的1至30个单元格、单元格区域或数值。
实例:如果A1=76、A2=85、A3=TRUE,则公式“=AVERAGEA(A1:A3)”返回54(即76+85+1/3=54)。
12.COUNT
用途:返回数字参数的个数。它可以统计数组或单元格区域中含有数字的单元格个数。
语法:COUNT(value1,value2,...)。
参数:value1,value2,...是包含或引用各种类型数据的参数(1~30个),其中只有数字类型的数据才能被统计。
实例:如果A1=90、A2=人数、A3=〞〞、A4=54、A5=36,则公式“=COUNT(A1:A5)”返回3。
13.COUNTA
用途:返回参数组中非空值的数目。利用函数COUNTA可以计算数组或单元格区域中数据项的个数。
语法:COUNTA(value1,value2,...)
说明:value1,value2,...所要计数的值,参数个数为1~30个。在这种情况下的参数可以是任何类型,它们包括空格但不包括空白单元格。如果参数是数组或单元格引用,则数组或引用中的空白单元格将被忽略。如果不需要统计逻辑值、文字或错误值,则应该使用COUNT函数。
实例:如果A1=6.28、A2=3.74,其余单元格为空,则公式“=COUNTA(A1:A7)”的计算结果等于2。
14.COUNTBLANK
用途:计算某个单元格区域中空白单元格的数目。
语法:COUNTBLANK(range)
参数:Range为需要计算其中空白单元格数目的区域。
实例:如果A1=88、A2=55、A3=""、A4=72、A5="",则公式“=COUNTBLANK(A1:A5)”返回2。
15.COUNTIF
用途:计算区域中满足给定条件的单元格的个数。
语法:COUNTIF(range,criteria)
参数:Range为需要计算其中满足条件的单元格数目的单元格区域。Criteria为确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式或文本。
36.LARGE
用途:返回某一数据集中的某个最大值。可以使用LARGE函数查询考试分数集中第一、第二、第三等的得分。
语法:LARGE(array,k)
参数:Array为需要从中查询第k个最大值的数组或数据区域,K为返回值在数组或数据单元格区域里的位置(即名次)。
实例:如果B1=59、B2=70、B3=80、B4=90、B5=89、B6=84、B7=92,,则公式“=LARGE(B1,B7,2)”返回90。
41.MAX
用途:返回数据集中的最大数值。
语法:MAX(number1,number2,...)
参数:Number1,number2,...是需要找出最大数值的1至30个数值。
实例:如果A1=71、A2=83、A3=76、A4=49、A5=92、A6=88、A7=96,则公式“=MAX(A1:A7)”返回96。
42.MAXA
用途:返回数据集中的最大数值。它与MAX的区别在于文本值和逻辑值(如TRUE和FALSE)作为数字参与计算。
语法:MAXA(value1,value2,...)
参数:value1,value2,...为需要从中查找最大数值的1到30个参数。
实例:如果A1:A5包含0、0.2、0.5、0.4和TRUE,则:MAXA(A1:A5)返回1。
43.MEDIAN
用途:返回给定数值集合的中位数(它是在一组数据中居于中间的数。换句话说,在这组数据中,有一半的数据比它大,有一半的数据比它小)。
语法:MEDIAN(number1,number2,...)
参数:Number1,number2,...是需要找出中位数的1到30个数字参数。
实例:MEDIAN(11,12,13,14,15)返回13;MEDIAN(1,2,3,4,5,6)返回3.5,即3与4的平均值。
44.MIN
用途:返回给定参数表中的最小值。
语法:MIN(number1,number2,...)。
参数:Number1,number2,...是要从中找出最小值的1到30个数字参数。
实例:如果A1=71、A2=83、A3=76、A4=49、A5=92、A6=88、A7=96,则公式“=MIN(A1:A7)”返回49;而=MIN(A1:A5,0,-8)返回-8。
45.MINA
用途:返回参数清单中的最小数值。它与MIN函数的区别在于文本值和逻辑值(如TRUE和FALSE)也作为数字参与计算。
语法:MINA(value1,value2,...)
参数:value1,value2,...为需要从中查找最小数值的1到30个参数。
实例:如果A1=71、A2=83、A3=76、A4=49、A5=92、A6=88、A7=FALSE,则公式“=MINA(A1:A7)”返回0。
59.RANK
用途:返回一个数值在一组数值中的排位(如果数据清单已经排过序了,则数值的排位就是它当前的位置)。
语法:RANK(number,ref,order)
参数:Number是需要计算其排位的一个数字;Ref是包含一组数字的数组或引用(其中的非数值型参数将被忽略);Order为一数字,指明排位的方式。如果order为0或省略,则按降序排列的数据清单进行排位。如果order不为零,ref当作按升序排列的数据清单进行排位。
注意:函数RANK对重复数值的排位相同。但重复数的存在将影响后续数值的排位。如在一列整数中,若整数60出现两次,其排位为5,则61的排位为7(没有排位为6的数值)。
实例:如果A1=78、A2=45、A3=90、A4=12、A5=85,则公式“=RANK(A1,$A:$A$5)”返回5、8、2、10、4。
63.SMALL
用途:返回数据集中第k个最小值,从而得到数据集中特定位置上的数值。
语法:SMALL(array,k)
参数:Array是需要找到第k个最小值的数组或数字型数据区域,K为返回的数据在数组或数据区域里的位置(从小到大)。
实例:如果如果A1=78、A2=45、A3=90、A4=12、A5=85,则公式“=SMALL(A1:A5,3)”返回78。
(十一)文本和数据函数
1.ASC
用途:将字符串中的全角(双字节)英文字母更改为半角(单字节)字符。
语法:ASC(text)
参数:Text为文本或包含文本的单元格引用。如果文本中不包含任何全角英文字母,则文本不会被更改。
实例:如果A1=excel,则公式“=ASC(A1)”返回excel。
2.CHAR
用途:返回对应于数字代码的字符,该函数可将其他类型的电脑文件中的代码转换为字符(操作环境为MacintoshMacintosh字符集和WindowsANSI字符集)。
语法:CHAR(number)。
参数:Number是用于转换的字符代码,介于1~255之间(使用当前计算机字符集中的字符)。
实例:公式“=CHAR(56)”返回8,=CHAR(36)返回$。
3.CLEAN
用途:删除文本中不能打印的字符。对从其他应用程序中输入的字符串使用CLEAN函数,将删除其中含有的当前操作系统无法打印的字符。
语法:CLEAN(text)。
参数:Text为要从中删除不能打印字符的任何字符串。
实例:由于CHAR(7)返回一个不能打印的字符,因此公式“=CLEAN(CHAR(7)&"text"&CHAR(7))”返回text。
4.CODE
用途:返回文字串中第一个字符的数字代码(对应于计算机当前使用的字符集)。
语法:CODE(text)
参数:Text为需要得到其第一个字符代码的文本。
实例:因为CHAR(65)返回A,所以公式“=CODE("Alphabet")”返回65。
5.CONCATENATE
用途:将若干文字串合并到一个文字串中,其功能与"&"运算符相同。
语法:CONCATENATE(text1,text2,...)
参数:Text1,text2,...为1到30个将要合并成单个文本的文本项,这些文本项可以是文字串、数字或对单个单元格的引用。
实例:如果A1=98、A2=千米,则公式“=CONCATENATE(A1,A2)”返回“98千米”,与公式“=A1&A2”等价。
6.DOLLAR或RMB
用途:按照货币格式将小数四舍五入到指定的位数并转换成文字。
语法:DOLLAR(number,decimals)或RMB(number,decimals)。
参数:Number是数字、包含数字的单元格引用,或计算结果为数字的公式;Decimals是十进制的小数,如果Decimals为负数,则参数number从小数点往左按相应位数取整。如果省略Decimals,则假设其值为2。
实例:公式“=RMB(1586.567,2)”返回“¥1586.57”,=RMB(99.888)返回“¥99.89”。
7.EXACT
用途:测试两个字符串是否完全相同。如果它们完全相同,则返回TRUE;否则返回FALSE。EXACT函数能区分大小写,但忽略格式上的差异。
语法:EXACT(text1,text2)。
参数:Text1是待比较的第一个字符串,Text2是待比较的第二个字符串。
实例:如果A1=物理、A2=化学A3=物理,则公式“=EXACT(A1,A2)”返回FALSE,=EXACT(A1,A3)返回FALSE,=EXACT("word","word")返回TRUE。
8.FIND
用途:FIND用于查找其他文本串(within_text)内的文本串(find_text),并从within_text的首字符开始返回find_text的起始位置编号。此函数适用于双字节字符,它区分大小写但不允许使用通配符。
语法:FIND(find_text,within_text,start_num),
参数:Find_text是待查找的目标文本;Within_text是包含待查找文本的源文本;Start_num指定从其开始进行查找的字符,即within_text中编号为1的字符。如果忽略start_num,则假设其为1。
实例:如果A1=软件报,则公式“=FIND("软件",A1,1)”返回1。
9.FINDB
用途:FINDB用于查找其他文本串(within_text)内的文本串(find_text),并根据每个字符使用的字节数从within_text的首字符开始返回find_text的起始位置编号。FIND与FINDB的区别在于:前者是以字符数为单位返回起始位置编号,后者是以字节数为单位返回起始位置编号。
语法:FINDB(find_text,within_text,start_num),
参数:Find_text是待查找的目标文本;Within_text是包含待查找文本的源文本;Start_num指定从其开始进行查找的字符,即within_text中编号为1的字符。如果忽略start_num,则假设其为1。
注意:此函数适用于双字节字符,它能区分大小写但不允许使用通配符。其它事项与FIND函数相同。
实例:如果A1=电脑爱好者,则公式“=FINDB(爱好者",A1,1)”返回5。因为每个字符均按字节进行计算,而一个汉字为2个字节,所以第三个汉字“爱”从第五个字节开始。
10.FIXED
用途:按指定的小数位数四舍五入一个数,以小数格式设置后以文字串形式返回结果。
语法:FIXED(number,decimals,no_commas)。
参数:Number是要进行四舍五入并转换成文字串的数;Decimals为一数值,用以指定小数点右边的小数位数;No_commas为一逻辑值。如果是TRUE,则函数FIXED返回的文字不含逗号。如果no_commas是FALSE或省略,则返回的文字中包含逗号。
实例:如果A1=2001.16845,则公式“=FIXED(A2,2,TRUE)”返回2001.17,=FIXED(6834.567,-1)返回6830。
11.JIS
用途:将字符串中的半角(单字节)英文字母更改为全角(双字节)字符。
语法:JIS(text)
参数:Text为文本或对包含文本的单元格(或引用)。如果文本中不包含任何半角英文字母,则文本不会更改。
实例:如果A1=excel,则公式“=JIS(a1)”返回EXCEL。
12.LEFT或LEFTB
用途:根据指定的字符数返回文本串中的第一个或前几个字符。此函数用于双字节字符。
语法:LEFT(text,num_chars)或LEFTB(text,num_bytes)。
参数:Text是包含要提取字符的文本串;Num_chars指定函数要提取的字符数,它必须大于或等于0。Num_bytes按字节数指定由LEFTB提取的字符数。
实例:如果A1=电脑爱好者,则LEFT(A1,2)返回“电脑”,LEFTB(A1,2)返回“电”。
13.LEN或LENB
用途:LEN返回文本串的字符数。LENB返回文本串中所有字符的字节数。
语法:LEN(text)或LENB(text)。
参数:Text待要查找其长度的文本。
注意:此函数用于双字节字符,且空格也将作为字符进行统计。
实例:如果A1=电脑爱好者,则公式“=LEN(A1)”返回5,=LENB(A1)返回10。
14.LOWER
用途:将一个文字串中的所有大写字母转换为小写字母。
语法:LOWER(text)。
语法:Text是包含待转换字母的文字串。
注意:LOWER函数不改变文字串中非字母的字符。LOWER与PROPER和UPPER函数非常相似。
实例:如果A1=Excel,则公式“=LOWER(A1)”返回excel。
15.MID或MIDB
用途:MID返回文本串中从指定位置开始的特定数目的字符,该数目由用户指定。MIDB返回文本串中从指定位置开始的特定数目的字符,该数目由用户指定。MIDB函数可以用于双字节字符。
语法:MID(text,start_num,num_chars)或MIDB(text,start_num,num_bytes)。
参数:Text是包含要提取字符的文本串。Start_num是文本中要提取的第一个字符的位置,文本中第一个字符的start_num为1,以此类推;Num_chars指定希望MID从文本中返回字符的个数;Num_bytes指定希望MIDB从文本中按字节返回字符的个数。
实例:如果a1=电子计算机,则公式“=MID(A1,3,2)”返回“计算”,=MIDB(A1,3,2)返回“子”。
16.PHONETIC
用途:提取文本串中的拼音(furigana)字符。
语法:PHONETIC(reference)。
参数:Reference为文本串或对单个单元格或包含文本串的单元格区域的引用。如果reference为单元格区域,则返回区域左上角单元格中的furigana文本串。如果reference为不相邻单元格的区域,将返回#N/A错误值。
注意:该函数在中文Excel中无效。
17.PROPER
用途:将文字串的首字母及任何非字母字符之后的首字母转换成大写。将其余的字母转换成小写。
语法:PROPER(text)
参数:Text是需要进行转换的字符串,包括双引号中的文字串、返回文本值的公式或对含有文本的单元格引用等。
实例:如果A1=学习excel,则公式“=PROPER(A1)”返回“学习Excel”。
18.REPLACE或REPLACEB
用途:REPLACE使用其他文本串并根据所指定的字符数替换另一文本串中的部分文本。REPLACEB的用途与REPLACE相同,它是根据所指定的字节数替换另一文本串中的部分文本。
语法:REPLACE(old_text,start_num,num_chars,new_text),REPLACEB(old_text,start_num,num_bytes,new_text)。
参数:Old_text是要替换其部分字符的文本;Start_num是要用new_text替换的old_text中字符的位置;Num_chars是希望REPLACE使用new_text替换old_text中字符的个数;Num_bytes是希望REPLACE使用new_text替换old_text的字节数;New_text是要用于替换old_text中字符的文本。
注意:以上两函数均适用于双字节的汉字。
实例:如果A1=学习的革命、A2=电脑,则公式“=REPLACE(A1,3,3,A2)”返回“学习电脑”,=REPLACEB(A1,2,3,A2)返回“电脑的革命”。
19.REPT
用途:按照给定的次数重复显示文本。可以通过REPT函数对单元格进行重复填充。
语法:REPT(text,number_times)。
参数:Text是需要重复显示的文本,Number_times是重复显示的次数(正数)。
注意:REPT函数的结果不能多于255个字符。
实例:公式“=REPT("软件报",2)”返回“软件报软件报”。
20.RIGHT或RIGHTB
用途:RIGHT根据所指定的字符数返回文本串中最后一个或多个字符。RIGHTB根据所指定的字节数返回文本串中最后一个或多个字符。
语法:RIGHT(text,num_chars),RIGHTB(text,num_bytes)。
参数:Text是包含要提取字符的文本串;Num_chars指定希望RIGHT提取的字符数,它必须大于或等于0。如果num_chars大于文本长度,则RIGHT返回所有文本。如果忽略num_chars,则假定其为1。Num_bytes指定欲提取字符的字节数。
实例:如果A1=学习的革命,则公式“=RIGHT(A1,2)”返回“革命”,=RIGHTB(A1,2)返回“命”。
21.SEARCH或SEARCHB
用途:返回从start_num开始首次找到特定字符或文本串的位置编号。其中SEARCH以字符数为单位,SEARCHB以字节数为单位。
语法:SEARCH(find_text,within_text,start_num),SEARCHB(find_text,within_text,start_num)。
参数:Find_text是要查找的文本,可以使用通配符,包括问号“?”和星号“*”。其中问号可匹配任意的单个字符,星号可匹配任意的连续字符。如果要查找实际的问号或星号,应当在该字符前键入波浪线“~”。Within_text是要在其中查找find_text的文本。Start_num是within_text中开始查找的字符的编号。如果忽略start_num,则假定其为1。
实例:如果A1=学习的革命,则公式“=SEARCH("的",A1)”返回3,=SEARCHB("的",A1)返回5。
22.SUBSTITUTE
用途:在文字串中用new_text替代old_text。如果需要在一个文字串中替换指定的文本,可以使用函数SUBSTITUTE;如果需要在某一文字串中替换指定位置处的任意文本,就应当使用函数REPLACE。
语法:SUBSTITUTE(text,old_text,new_text,instance_num)。
参数:Text是需要替换其中字符的文本,或是含有文本的单元格引用;Old_text是需要替换的旧文本;New_text用于替换old_text的文本;Instance_num为一数值,用来指定以new_text替换第几次出现的old_text;如果指定了instance_num,则只有满足要求的old_text被替换;否则将用new_text替换Text中出现的所有old_text。
实例:如果A1=学习的革命、A2=电脑,则公式“=SUBSTITUTE(A1,"的革命",A2,1)”返回“学习电脑”。
23.T
用途:将数值转换成文本。
语法:T(value)。
参数:value是需要进行测试的数据。如果value本身就是文本,或是对文本单元格的引用,T函数将返回value;如果没有引用文本,则返回""(空文本)。
实例:如果A1中含有文本“电脑”,则公式“=T(A1)”返回“电脑”。
24.TEXT
用途:将数值转换为按指定数字格式表示的文本。
语法:TEXT(value,format_text)。
参数:value是数值、计算结果是数值的公式、或对数值单元格的引用;Format_text是所要选用的文本型数字格式,即“单元格格式”对话框“数字”选项卡的“分类”列表框中显示的格式,它不能包含星号“*”。
注意:使用“单元格格式”对话框的“数字”选项卡设置单元格格式,只会改变单元格的格式而不会影响其中的数值。使用函数TEXT可以将数值转换为带格式的文本,而其结果将不再作为数字参与计算。
实例:如果A1=2986.638,则公式“=TEXT(A5,"#,##0.00")”返回2,986.64。
25.TRIM
用途:除了单词之间的单个空格外,清除文本中的所有的空格。如果从其他应用程序中获得了带有不规则空格的文本,可以使用TRIM函数清除这些空格。
语法:TRIM(text)。
参数:Text是需要清除其中空格的文本。
实例:如果A1=FirstQuarterEarnings,则公式“=TRIM(A1)”返回“FirstQuarterEarnings”。
26.UPPER
用途:将文本转换成大写形式。
语法:UPPER(text)。
参数:Text为需要转换成大写形式的文本,它可以是引用或文字串。
实例:公式“=UPPER("apple")”返回APPLE。
27.value
用途:将表示数字的文字串转换成数字。
语法:value(text)。
参数:Text为带引号的文本,或对需要进行文本转换的单元格的引用。它可以是Excel可以识别的任意常数、日期或时间格式。如果Text不属于上述格式,则value函数返回错误值#value!。
注意:通常不需要在公式中使用value函数,Excel可以在需要时自动进行转换。value函数主要用于与其他电子表格程序兼容。
实例:公式“=value("¥1,000")”返回1000;=value("16:48:00")-value("12:00:00")返回0.2,该序列数等于4小时48分钟。
28.WIDECHAR
用途:将单字节字符转换为双字节字符。
语法:WIDECHAR(text)。
参数:Text是需要转换为双字节字符的文本或包含文本的单元格引用。
注意:因为汉字本身是双字节字符,所以使用此函数转换汉字时得到的是汉字的原形。
实例:公式“=WIDECHAR("apple")”返回apple,=WIDECHAR("电脑")返回“电脑”。
四、函数应用案例──信息统计
使用Excel管理人事信息,具有无须编程、简便易行的特点。假设有一个人事管理工作表,它的A1、B1、C1、D1、E1、F1、G1和H1单元格分别输入“序号”、“姓名”、“身份证号码”、“性别”、“出生年月”等。自第2行开始依次输入职工的人事信息。为了尽可能减少数据录入的工作量,下面利用Excel函数实现数据统计的自动化。
1.性别输入
根据现行的居民身份证号码编码规定,正在使用的18位的身份证编码。它的第17位为性别(奇数为男,偶数为女),第18位为效验位。而早期使用的是15位的身份证编码,它的第15位是性别(奇数为男,偶数为女)。
(1)函数分解
LEN函数返回文本字符串中的字符数。
语法:LEN(text)
Text是要查找其长度的文本。空格将作为字符进行计数。
MOD函数返回两数相除的余数。结果的正负号与除数相同。
语法:MOD(number,divisor)
Number为被除数;Divisor为除数。
MID函数返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。
语法:MID(text,start_num,num_chars)
Text为包含要提取字符的文本字符串;Start_num为文本中要提取的第一个字符的位置。文本中第一个字符的start_num为1,以此类推;Num_chars指定希望MID从文本中返回字符的个数。
(2)实例分析
为了适应上述情况,必须设计一个能够适应两种身份编码的性别计算公式,在D2单元格中输入“=IF(LEN(C2)=15,IF(MOD(MID(C2,15,1),2)=1,"男","女"),IF(MOD(MID(C2,17,1),2)=1,"男","女"))”。回车后即可在单元格获得该职工的性别,而后只要把公式复制到D3、D4等单元格,即可得到其他职工的性别。
为了便于大家了解上述公式的设计思路,下面简单介绍一下它的工作原理:该公式由三个IF函数构成,其中“IF(MOD(MID(C2,15,1),2)=1,"男","女")”和“IF(MOD(MID(C2,17,1),2)=1,"男","女")”作为第一个函数的参数。公式中“LEN(C2)=15”是一个逻辑判断语句,LEN函数提取C2等单元格中的字符长度,如果该字符的长度等于15,则执行参数中的第一个IF函数,否则就执行第二个IF函数。
在参数“IF(MOD(MID(C2,15,1),2)=1,"男","女")”中。MID函数从C2的指定位置(第15位)提取1个字符,而MOD函数将该字符与2相除,获取两者的余数。如果两者能够除尽,说明提取出来的字符是0(否则就是1)。逻辑条件“MOD(MID(C2,15,1),2)=1”不成立,这时就会在D2单元格中填入“女”,反之则会填入“男”。
如果LEN函数提取的C2等单元格中的字符长度不等于15,则会执行第2个IF函数。除了MID函数从C2的指定位置(第17位,即倒数第2位)提取1个字符以外,其他运算过程与上面的介绍相同。
2.出生日期输入
(1)函数分解
CONCATENATE函数将几个文本字符串合并为一个文本字符串。
语法:CONCATENATE(text1,text2,...)
Text1,text2,...为1~30个要合并成单个文本项的文本项。文本项可以为文本字符串、数字或对单个单元格的引用。
(2)实例分析
与上面的思路相同,我们可以在E2单元格中输入公式“=IF(LEN(C2)=15,CONCATENATE("19",MID(C2,7,2),"年",MID(C2,9,2),"月",MID(C2,11,2),"日"),CONCCTENCTE(MID(C2,7,4),"年",MID(C2,11,2),"月",MID(C2,13,2),"日"))”。其中“LEN(C2)=15”仍然作为逻辑判断语句使用,它可以判断身份证号码是15位的还是18位的,从而调用相应的计算语句。
对15位的身份证号码来说,左起第7至12个字符表示出生年、月、日,此时可以使用MID函数从身份证号码的特定位置,分别提取出生年、月、日。然后用CONCATENATE函数将提取出来的文字合并起来,就能得到对应的出生年月日。公式中“19”是针对早期身份证号码中存在2000年问题设计的,它可以在计算出来的出生年份前加上“19”。对“18”位的身份证号码的计算思路相同,只是它不存在2000年问题,公式中不用给计算出来的出生年份前加上“19”。
注意:CONCATENATE函数和MID函数的操作对象均为文本,所以存放身份证号码的单元格必须事先设为文本格式,然后再输入身份证号。
3.职工信息查询
Excel提供的“记录单”功能可以查询记录,如果要查询人事管理工作表中的某条记录,然后把它打印出来,必须采用下面介绍的方法。
(1)函数分解
INDEX函数返回数据清单或数组中的元素值,此元素由行序号和列序号的索引值给定。
INDEX函数有两种语法形式:数组和引用。数组形式通常返回数值或数值数组,引用形式通常返回引用。当函数INDEX的第一个参数为数组常数时,使用数组形式。
语法1(数组形式):INDEX(array,row_num,column_num)
Array为单元格区域或数组常量。如果数组只包含一行或一列,则相对应的参数row_num或column_num为可选。如果数组有多行和多列,但只使用row_num或column_num,函数INDEX返回数组中的整行或整列,且返回值也为数组;Row_num为数组中某行的行序号,函数从该行返回数值。如果省略row_num,则必须有column_num;Column_num为数组中某列的列序号,函数从该列返回数值。如果省略column_num,则必须有row_num。
语法2(引用形式):INDEX(reference,row_num,column_num,area_num)
Reference表示对一个或多个单元格区域的引用。如果为引用输入一个不连续的区域,必须用括号括起来。如果引用中的每个区域只包含一行或一列,则相应的参数row_num或column_num分别为可选项;Row_num引用中某行的行序号,函数从该行返回一个引用;Column_num引用中某列的列序号,函数从该列返回一个引用;Area_num选择引用中的一个区域,并返回该区域中row_num和column_num的交叉区域。选中或输入的第一个区域序号为1,第二个为2,以此类推。如果省略area_num,函数INDEX使用区域1。
MATCH函数返回在指定方式下与指定数值匹配的数组中元素的相应位置。
语法:MATCH(lookup_value,lookup_array,match_type)
Lookup_value为需要在数据表中查找的数值;Lookup_value为需要在Look_array中查找的数值;Match_type为数字-1、0或1。
(2)实例分析
如果上面的人事管理工作表放在Sheet1中,为了防止因查询操作而破坏它(必要时可以添加只读保护),我们可以打开另外一个空白工作表Sheet2,把上一个数据清单中的列标记复制到第一行。假如你要以“身份证号码”作为查询关键字,就要在C2单元格中输入公式“=INDEX(Sheet1!C2:C600,MATCH( SC S5,Sheet1! SC S2: SC S600,0),1)”。其中的参数“ SC S5”引用公式所在工作表中的C5单元格(也可以选用其他单元格),执行查询时要在其中输入查询关键字,也就是待查询记录中的身份证号码。参数“Sheet1!C2:C600”设定INDEX函数的查询范围,引用的是数据清单C列的所有单元格。MATCH函数中的参数“0”指定它查找“Sheet1! SC S2: SC S600”区域中等于 SC S5的第一个值,并且引用的区域“Sheet1! SC S2: SC S600,0”可以按任意顺序排列。
上面的公式执行数据查询操作时,首先由MATCH函数在“Sheet1! SC S2: SC S600”区域搜索,找到“ SC S5”单元格中的数据在引用区域中的位置(自上而下第几个单元格),从而得知待查询数据在引用区域中的第几行。
接下来INDEX函数根据MATCH函数给出的行号,返回“Sheet1!C2:C600”区域中对应行数单元格中的数据。假设其中待查询的“身份证号码”是“3234567896”,它位于“Sheet1! SC S2: SC S600”区域的第三行,MATCH函数就会返回“3”。接着INDEX函数返回“Sheet1!C2:C600”区域中行数是“3”的数据,也就是“3234567896”。
然后,我们将光标放到C2单元格的填充柄上,当十字光标出现以后向右拖动,从而把C2中的公式复制到D2、E2等单元格(然后再向左拖动,以便把公式复制到B2、A2单元格),这样就可以获得与该身份证号对应的性别、籍贯等数据。
注意:公式复制到D2、E2等单元格以后,INDEX函数引用的区域就会发生变化,由C2:C600变成D2:D600、E2:E600等等。但是MATCH函数返回的(相对)行号仍然由查询关键字给出,此后INDEX函数就会根据MATCH函数返回的行号从引用区域中找到数据。
在Sheet2工作表中进行查询时只要在查询输入单元格中输入关键字,回车后即可在工作表的C2单元格内看到查询出来的身份证号码。如果输入的身份证号码关键字不存在或输入错误,则单元格内会显示“#N/A”字样。
4.职工性别统计
(1)函数分解
COUNTIF函数计算区域中满足给定条件的单元格的个数。
语法:COUNTIF(range,criteria)
Range为需要计算其中满足条件的单元格数目的单元格区域;Criteria为确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式或文本。
(2)实例分析
假设上面使用的人事管理工作表中有599条记录,统计职工中男性和女性人数的方法是:选中单元格D601(或其他用不上的空白单元格),统计男性职工人数可以在其中输入公式“="男"&COUNTIF(D2:D600,"男")&"人"”;接着选中单元格D602,在其中输入公式“="女"&COUNTIF(D2:D227,"女")&"人"”。回车后即可得到“男399人”、“女200人”。
上式中D2:D600是对“性别”列数据区域的引用,实际使用时必须根据数据个数进行修改。“男”或“女”则是条件判断语句,用来判断区域中符合条件的数据然后进行统计。“&”则是字符连接符,可以在统计结果的前后加上“男”、“人”字样,使其更具有可读性。
5.年龄统计
在人事管理工作中,统计分布在各个年龄段中的职工人数也是一项经常性工作。假设上面介绍的工作表的E2:E600单元格存放职工的工龄,我们要以5年为一段分别统计年龄小于20岁、20至25岁之间,一直到55至60岁之间的年龄段人数,可以采用下面的操作方法。
(1)函数分解
FREQUENCY函数以一列垂直数组返回某个区域中数据的频率分布。
语法:FREQUENCY(data_array,bins_array)
Data_array为一数组或对一组数值的引用,用来计算频率。如果data_array中不包含任何数值,函数FREQUENCY返回零数组;Bins_array为间隔的数组或对间隔的引用,该间隔用于对data_array中的数值进行分组。如果bins_array中不包含任何数值,函数FREQUENCY返回data_array中元素的个数。
(2)实例分析
首先在工作表中找到空白的I列(或其他列),自I2单元格开始依次输入20、25、30、35、40...60,分别表示统计年龄小于20、20至25之间、25至30之间等的人数。然后在该列旁边选中相同个数的单元格,例如J2:J10准备存放各年龄段的统计结果。然后在编辑栏输入公式“=FREQUENCY(YEAR(TODAY())-YEAR(E2:E600),I2:I10)”,按下Ctrl+Shift+Enter组合键即可在选中单元格中看到计算结果。其中位于J2单元格中的结果表示年龄小于20岁的职工人数,J3单元格中的数值表示年龄在20至25之间的职工人数等。
6.名次值统计
在工资统计和成绩统计等场合,往往需要知道某一名次(如工资总额第二、第三)的员工的工资是多少。这种统计的操作方法如下。
(1)函数分解
LARGE函数返回数据集中第K个最大值。使用此函数可以根据相对标准来选择数值。
语法:LARGE(array,k)
Array为需要从中选择第K个最大值的数组或数据区域;K为返回值在数组或数据单元格区域中的位置(从大到小排)。
SMALL函数返回数据集中第K个最小值。使用此函数可以返回数据集中特定位置上的数值。
语法:SMALL(array,k)
Array为需要找到第K个最小值的数组或数字型数据区域;K为返回的数据在数组或数据区域里的位置(从小到大)。
(2)实例分析
假设C2:C688区域存放着员工的工资,首先在D列选取空白单元格D3,在其中输入公式“=LARGE(C2:C688,D2)”。其中D2作为输入名次变量的单元格,如果你在其中输入3,公式就可以返回C2:C688区域中第三大的数值。
如果我们把上述公式修改为“=SMALL(C2:C688,D1)”,然后在D1单元格中输入6,就可以获得C2:C688区域倒数第六(小)的数值。
为方便起见,你可以给C2:C688区域定义一个名称“职工工资”。此后可以把上述公式修改为“=LARGE(职工工资,D2)”或“=SMALL(职工工资,D1)”。
7.位次阈值统计
与上例相似,在工资统计和成绩统计等场合,需要知道排名达到总体的前1/3的工资总额或分数(称为“阈值”)是多少。这种统计的操作方法如下:
(1)函数分解
PERCENTILE函数返回区域中数值的第K个百分点的值。可以使用此函数来建立接受阈值。
语法:PERCENTILE(array,k)
Array为定义相对位置的数组或数据区域;K为0到1之间的百分点值,包含0和1。
(2)实例分析
假设C2:C200区域存放着学生的考试成绩,首先在D列选取空白单元格D3,在其中输入公式“=PERCENTILE(C2:C200,D2)”。其中D2作为输入百分点变量的单元格,如果你在其中输入0.33,公式就可以返回名次达到前1/3所需要的成绩。
五、函数应用案例──管理计算
企业、学校等单位均存在许多管理计算问题,例如计算一个学期有几个授课日、企业在多少个工作日之后交货等等。下面介绍有关问题的几种计算方法。
1.授课日数
(1)函数分解
NETWORKDAYS函数专门用于计算两个日期值之间完整的工作日数值。这个工作日数值将不包括双休日和专门指定的其他各种假期。
语法:NETWORKDAYS (Start_date,End_date,Holidays)
Start_date表示开始日期;End_date为终止日期,Holidays表示作为特定假日的一个或多个日期。这些参数值既可以手工输入,也可以对单元格的值进行引用。
(2)实例分析
假设新学期从2003年9月1日开始到2004年1月15日结束,希望知道本学期有多少个授课日,也就是排除双休日和国家法定假日外的授课工作日。这就是计算授课日数或工作日数的问题。
首先打开一个空白工作表,在A1、B1、C1单元格输入“开学时间”、“结束时间”、“法定节日”,然后在其下面的单元格内输入“2003-9-1”、“2004-1-15”、“2003-10-1” “2003-10-2”、“2003-10-3”和“2004-1-1”(后四项必须在C列的“法定假日”下)。
接着可以选中D2单元格,输入公式“=NETWORKDAYS(A2,B2,C2:C5)”。公式中A2引用的是学期(或工作)的开始日期,B2引用的是学期结束的日期,C2:C5区域引用的是作为法定假日的多个日期。输入结束回车即可获得结果95,即2003年9月1日到2004年1月15日,排除四个法定假日后的实际授课日是95天。
回复Comments
作者:
{commentrecontent}