2.3 函数
函数处理数据的方式与公式处理数据的方式相同,函数通过引用参数接收数据,并返回结果。大多数情况下,返回的是计算的结果,也可以返回文本、引用、逻辑值或工作表的信息。本章中列出的函数都可以用于工作表或Excel宏表中。本章将学习使用函数,然后介绍Excel中的一些工作表函数及其参数说明。
2.3.1 函数概述
前面已经看到,单元格中可以包括文本、公式函数。通过公式和函数,就可以在单元格中放置计算的值。公式可以进行加、减、乘、除运算,也可以包含函数。
Excel用预置的工作表函数进行数学、文本、逻辑的运算或者查找工作表的信息。与直接用公式进行计算相比,使用函数计算的速度更快。例如公式=(A1+A2+A3+A4)/4与使用函数=AVERAGE(A1:A4)是等价的。但是使用函数速度更快,而且占用工具栏的空间更少,同时可以减少输入出错的机会,因此,只要可能,建议用户应该尽量使用函数。
函数通过参数接收数据,输入的参数应该放在函数名后,并且必须用括号括起来,各函数使用特定类型的参数,如数值、引用、文本或者逻辑值,函数中使用参数的方式与等式中使用变量的方式相同。
函数的语法以函数的名称开始,后面是左括号以及逗号隔开的参数和右括号。如果函数要以公式的形式出现,需要在函数名前输入等号。
1.函数分类
(1)数字和三角函数:可以处理简单和复杂的数学计算。
(2)文本函数:文本函数用于在公式中处理字符串。
(3)逻辑函数:使用逻辑函数可以进行真假值判断,或者进行符号检验。
(4)数据库函数:用于分析数据清单中的数值是否符合特定条件。
(5)统计函数:可以对选定区域的数据进行统计分析。
(6)查找和引用函数:可以在数据清单或者表格中查找特定数据,或者查找某一单元格的引用。
(7)日期与时间函数:用于在公式中分析和处理日期和时间值。
(8)过程函数:用于工程分析。
(9)信息函数:用于确定存储在单元格中的数据的类型。
(10)财务函数:可以进行一般的财务计算。
2.输入函数
输入函数与输入公式的过程类似。可以在单元格中直接输入函数的名称和参数,这是最快的方法。如果不能确定函数的拼写以及函数的参数,则可以使用函数向导插入函数。
一般在编辑栏输入函数名称加上左括号以后,Excel就会弹出一个公式选项板。公式选项板的使用可以参考2.2.2节。
操作实例2-4:输入单个函数
(1)选中要输入函数的单元格。
(2)单击【常用】工具栏上的【插入函数】按钮,将弹出【插入函数】对话框,如图2-62所示。
图2-62 【插入函数】对话框
(3)在【或选择类别】下拉列表框中选择所需要的函数类型,则该函数类型的所有函数将出现在【选择函数】列表框中,在该列表框中选择要使用的函数。
(4)单击【确定】按钮,完成函数的输入。
(5)在【插入函数】对话框中,2个列表框下部有选中函数的说明,通过这些说明可以了解所选函数的具体作用。
2.3.2 常见的函数
Excel的函数有200多个,下面列出了比较常用的Excel函数及其参数,并且进行解释、说明和举例,大家可以简要了解,具体的学习详见后面章节。
1.财务函数
1)DB函数
用固定余额递减法来计算一笔资产在给定期间内的折旧值。
语法:DB(cost, salvage, life, period, month)
参数:cost为资产原值,salvage为资产在折旧期末的价值(也称为资产残值), life为折旧期限(有时也称作资产的使用寿命), period为需要计算折旧值的期间。period必须使用与life相同的单位,month为第一年的月份数(省略时假设为12)。
2)DDB函数
用双倍余额递减法或其他方法来计算一笔资产在给定期间内的折旧值。
语法:DDB(cost, salvage, life, period, factor)
参数:cost为资产原值,salvage为资产在折旧期末的价值(也称为资产残值), life为折旧期限(有时也称作资产的使用寿命), period为需要计算折旧值的期间。period必须使用与life相同的单位,factor为余额递减速率(如果factor省略,则假设为2)。
3)PV函数
计算返回投资的现值(即一系列未来付款的当前值的累积和),如借入方的借入款即为贷出方贷款的现值。
语法:PV(rate, nper, pmt, fv, type)
参数:rate为各期利率,nper为总投资(或贷款)期数,pmt为各期所应支付的金额,fv为未来值,type指定各期的付款时间是在期初还是期末(1为期初,0为期末)。
4)FV函数
基于固定利率及等额分期付款方式,返回某项投资的未来值。
语法:FV(rate, nper, pmt, pv, type)
参数:rate为各期利率,nper为总投资期(即该项投资的付款期总数), pmt为各期所应支付的金额,pv为现值(即从该项投资开始计算时已经入账的款项,或一系列未来付款的当前值的累积和,也称为本金), type为数字0或1(0为期末,1为期初)。
5)NPV函数
通过使用贴现率以及一系列未来支出和收入,返回一项投资的净现值。
语法:NPV(rate, value1, value2, ...)
参数:rate为某一期间的贴现率,value1, value2, ...为1到29个参数,代表支出及收入。
6)RATE函数
返回投资或贷款的每期实际利率。
语法:RATE(nper, pmt, pv, fv, type, guess)
参数:nper为总投资期(即该项投资的付款期总数), pmt为各期付款额,pv为现值(本金), fv为未来值,type指定各期的付款时间是在期初还是期末(1为期初,0为期末)。
7)IRR函数
计算一组现金流的内部收益率。
语法:IRR(values, guess)
参数:values为数组或单元格的引用,包含用来计算返回的内部收益率的数字。guess为对函数IRR计算结果的估计值。
2.日期与时间函数
1)NOW函数
返回当前日期和时间所对应的序列号。
语法:NOW( )
参数:无
2)TODAY函数
返回系统当前日期的序列号。
语法:TODAY( )
参数:无
实例:公式“=TODAY( )”返回2001-8-28(执行公式时的系统时间)。
3)WEEKDAY函数
返回某日期的星期数。在默认情况下,它的值为1(星期天)到7(星期六)之间的一个整数。
语法:WEEKDAY(serial_number, return_type)
参数:serial_number是要返回日期数的日期,它有多种输入方式:带引号的文本串(如“2001/02/26”)、序列号(如35825表示1998年1月30日)或其他公式或函数的结果(如DAT-EVALUE(“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(星期日)。
3.数学与三角函数
1)SUM函数
返回某一单元格区域中所有数字之和。
语法:SUM(number1, number2, ...)。
参数:Number1, number2, ...为1到30个需要求和的数值(包括逻辑值及文本表达式)、区域或引用。
实例:如果A1=1、A2=2、A3=3,则公式“=SUM(A1:A3)”返回6; =SUM(“3”,2, TRUE)返回6,因为“3”被转换成数字3,而逻辑值TRUE被转换成数字1。
2)SUMIF函数
根据指定条件对若干单元格、区域或引用求和。
语法:SUMIF(range, criteria, sum_range)
参数:range为用于条件判断的单元格区域,criteria是由数字、逻辑表达式等组成的判定条件,sum_range为需要求和的单元格、区域或引用。
实例:某单位统计工资报表中职称为“中级”的员工工资总额。假设工资总额存放在工作表的F列,员工职称存放在工作表B列。则公式为“=SUMIF(B1:B1000,“中级”, F1:F1000)”,其中“B1:B1000”为提供逻辑判断依据的单元格区域,“中级”为判断条件,就是仅仅统计B1:B1000区域中职称为“中级”的单元格,F1:F1000为实际求和的单元格区域。
3)ROUND函数
按指定位数四舍五入某个数字。
语法:ROUND(number, num_digits)
参数:number是需要四舍五入的数字;num_digits为指定的位数,number按此位数进行处理。
注意:如果num_digits大于0,则四舍五入到指定的小数位;如果num_digits等于0,则四舍五入到最接近的整数;如果num_digits小于0,则在小数点左侧按指定位数四舍五入。
实例:如果A1=65.25,则公式“=ROUND(A1,1)”返回65.3; =ROUND(82.149,2)返回82.15; =ROUND(21.5, -1)返回20。
4)PI函数
返回圆周率π,精确到小数点后14位。
语法:PI( )
实例:公式“=PI( )”返回3.14159265358979。
4.统计函数
1)AVERAGE函数
计算所有参数的算术平均值。
语法:AVERAGE(number1, number2, ...)。
参数:Number1、number2、...是要计算平均值的1~30个参数。
实例:如果A1:A5区域命名为分数,其中的数值分别为100、70、92、47和82,则公式“=AVERAGE(分数)”返回78.2。
2)COUNT函数
返回数字参数的个数。它可以统计数组或单元格区域中含有数字的单元格个数。
语法:COUNT(value1, value2, ...)。
参数:value1, value2, ...是包含或引用各种类型数据的参数(1~30个),其中只有数字类型的数据才能被统计。
实例:如果A1=90、A2=人数、A3=〞〞、A4=54、A5=36,则公式“=COUNT(A1:A5)”返回3。
3)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。
5.查找及引用函数
在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。当比较值位于数据表首列时,可以使用函数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返回时是精确匹配还是近似匹配。可用0或1代替False或True;其中0表示精确查找,1表示近似查找;如果为true或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于lookup_value的最大数值;如果range_value为false,函数VLOOKUP将返回精确匹配值。如果找不到,则返回错误值#N/A。
实例:如果A1=23、A2=45、A3=50、A4=65,则公式“=VLOOKUP(50, A1:A4,1, TRUE)”返回50。
6.数据库函数
1)DAVERAGE函数
计算满足查询的数据库记录中给定字段内数值的平均值。
语法:DAVERAGE(database, field, criteria)
参数:database构成列表或数据库的单元格区域。field指定函数所使用的数据列。crite-ria为一组包含给定条件的单元格区域。
2)DCOUNT函数
计算数据库中给定字段满足条件的记录数。
语法:DCOUNT(database, field, criteria)
参数:database构成列表或数据库的单元格区域。field指定函数所使用的数据列。crite-ria为一组包含给定条件的单元格区域。
3)DSTDEV
将列表或数据库的列中满足指定条件的数字作为一个样本,估算样本总体的标准偏差。
语法:DSTDEV(database, field, criteria)
参数:database构成列表或数据库的单元格区域。field指定函数所使用的数据列。crite-ria为一组包含给定条件的单元格区域。
4)DMAX函数
返回数据清单或数据库的指定列中,满足给定条件单元格中的最大数值。
语法:DMAX(database, field, criteria)
参数:database构成列表或数据库的单元格区域。field指定函数所使用的数据列。crite-ria为一组包含给定条件的单元格区域。
7.文本函数
1)CONCATENATE函数
将若干文字串合并到一个文字串中,其功能与“&”运算符相同。
语法:CONCATENATE(text1, text2, ...)
参数:text1, text2, ...为1到30个将要合并成单个文本的文本项,这些文本项可以是文字串、数字或对单个单元格的引用。
实例:如果A1=98、A2=千米,则公式“=CONCATENATE(A1, A2)”返回“98千米”,与公式“=A1&A2”等价。
2)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。
3)LEN函数
返回输入项中的字符个数。
语法:LEN(text)或LENB(text)。
参数:text为待要查找其长度的文本。
注意:此函数用于双字节字符,且空格也将作为字符进行统计。
实例:如果A1=电脑爱好者,则公式“=LEN(A1)”返回5, =LENB(A1)返回10。
4)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)返回“电脑的革命”。
5)SEARCH函数
返回从start_num开始首次找到特定字符或文本串的位置编号。
语法: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。
8.逻辑函数
1)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”;以此类推直至计算结束,该函数广泛用于需要进行逻辑判断的场合。
2)AND函数
所有参数的逻辑值为真时返回true(真);只要有一个参数的逻辑值为假,则返回false(假)。
语法:AND(logical1, logical2, …)。
参数:logical1, logical2, …为待检验的1~30个逻辑表达式,它们的结论或为true(真)或为false(假)。参数必须是逻辑值或者包含逻辑值的数组或引用,如果数组或引用内含有文字或空白单元格,则忽略它的值。如果指定的单元格区域内包括非逻辑值,AND将返回错误值#value!。
3)NOT函数
求出一个逻辑值或逻辑表达式的相反值。如果您要确保一个逻辑值等于其相反值,就应该使用NOT函数。
语法:NOT(logical)
参数:logical是一个可以得出true或false结论的逻辑值或逻辑表达式。如果逻辑值或表达式的结果为false,则NOT函数返回true;如果逻辑值或表达式的结果为true,那么NOT函数返回的结果为false。
4)OR函数
判断给定参数中的逻辑值是否为真,只要有一个为真即返回true,如果全部为假,则返回false。
语法: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。