Excel函数速查一览 (一)数据库函数 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) 参数:同上 4 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。 5 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) 6 参数: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 是正值将产生未来日 7 期、负值产生过去日期;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。 三、函数应用案例──算账理财 1.零存整取储蓄 “零存整取”是工薪阶层常用的投资方式,这就需要计算 该项投资的未来值,从而决定是否选择某种储蓄方式。 (1)函数分解 FV 函数基于固定利率及等额分期付款方式,返回某项投 资的未来值。 语法:FV(rate,nper,pmt,pv,type) Rate 为各期利率;Nper 为总投资期,即该项投资的付款 期总数;Pmt 为各期所应支付的金额,其数值在整个年金期间 保持不变;Pv 为现值,即从该项投资开始计算时已经入账的 款项,或一系列未来付款的当前值的累积和;Type 为数字0 或1,用以指定各期的付款时间是在期初还是期末。 (2)实例分析 新建一个工作表,在其A1、B1、C1、D1 单元格分别输入 “投资利率”、“投资期限”、“投资金额”和“账户初始金 额”。假设妻子新建一个账户每月底存入300 元,年利2.1%(即 月息0.00175),连续存款5 年,可以在A2、B2、C2、D2 单元 格分别输入“0.00175”、“60”、“500”和“1”。 然后选中E2 单元格输入公式“=FV(A2,B2,-C2,D2,1)”, 回车即可获得该投资的到期本金合计为“¥18,994.67”。公 式中的“-C2”表示资金是支出的,“C2”前不加负号也可, 这样计算出来的结果就是负值。 如果丈夫也有“零存整取”账户,每月初存入200 元,年 利1.28%(即月息0.001667),连续存款3 年,可以在A3、B3、 C3、D3 单元格分别输入“0.001667”、“36”、“200”和 “0”。然后把E2 单元格中的公式复制到E3 单元格(将光标指 向E2 单元格的拖动柄,当黑色十字光标出现后向下拖动一 格),即可得知该投资的到期本金合计“¥7,426.42”。 提示:上述计算结果包括本金和利息,但不包括利息税等 其他费用。 2.还贷金额 如今贷款购买住房进行消费的家庭越来越多,计算贷款的 月偿还金额是决策的重要依据,下面我们就来设计如何知道自 己每月的还款金额。 (1)函数分解 PMT 函数基于固定利率及等额分期付款方式,返回贷款的 每期付款额。 语法:PMT(rate,nper,pv,fv,type) Rate 为贷款利率;Nper 为该项贷款的付款总数;Pv 为现 值,或一系列未来付款的当前值的累积和;Fv 为未来值,或 在最后一次付款后希望得到的现金余额;Type 为数字0 或1。 (2)实例分析 新建一个工作表,在其A1、B1、C1、D1 单元格分别输入 “贷款利率”、“还贷年限”、“贷款金额”和“还贷时间”。 假设贷款年利为4.1%(即月息0.00342),预计的还贷时间为 10 年,贷款金额为10 万元,且每月底还贷。可以在A2、B2、 C2、D2 单元格分别输入“0.00342”、“360”、“100000” 和“1”(表示月末还贷,0 表示月初还贷)。然后选中E2 单元 格输入公式“= PMT(A2,B2,C2,,D2)”,回车就可以获得每月 的还款金额为“¥-481.78”。 上式中C2 后的两个逗号之间还有一个参数,表示还贷期 限结束时账户上的余额,对这个例子来说应该是0,所以可以 忽略该参数或写成“= PMT(A2,B2,C2,0,D2)”。 3.保险收益 保险公司开办了一种平安保险,具体办法是一次性缴费 12000 元,保险期限为20 年。如果保险期限内没有出险,每 年返还1 000 元。请问在没有出险的情况下,它与现在的银行 利率相比,这种保险的收益率如何。 (1)函数分解 RATE 函数返回投资的各期利率。该函数通过迭代法计算 得出,并且可能无解或有多个解。 语法:RATE(nper,pmt,pv,fv,type,guess) Nper 为总投资期,即该项投资的付款期总数;Pmt 为各期 付款额,其数值在整个投资期内保持不变;Pv 为现值,即从 该项投资开始计算时已经入帐的款项,或一系列未来付款当前 值的累积和;Fv 为未来值,或在最后一次付款后希望得到的 现金余额;Type 为数字0 或1。 (2)实例分析 新建一个工作表,在其A1、B1、C1、D1 单元格分别输入 “保险年限”、“年返还金额”、“保险金额”、“年底返还” 和“现行利息”。然后在A2、B2、C2、D2 和E2 单元格分别输 43 入“20”、“1000”、“12000”、“1”(表示年底返还,0 表示年初返还)和“0.02”。然后选中F2 单元格输入公式 “=RATE(A2,B2,C2,,D2,E2)”,回车就可以获得该保险的年收 益率为“0.06”。要高于现行的银行存款利率,所以还是有利 可图的。上面公式中的C2 后面有两个逗号,说明最后一次付 款后账面上的现金余额为零。 4.个税缴纳金额 假设个人收入调节税的收缴标准是:工资在800 元以下的 免征调节税,工资800 元以上至1 500 元的超过部分按5%的 税率征收,1 500 元以上至2 000 元的超过部分按8%的税率征 收,高于2 000 元的超过部分按20%的税率征收。我们可以按 以下方法设计一个可以修改收缴标准的工作簿: 新建一个工作表,在其A1、B1、C1、D1、E1 单元格分别 输入“姓名”、“工资总额”、“扣款”、“个税”和“实付 工资”。为了方便个税标准的修改,我们可以另外打开一个工 作表(例如Sheet2),在其A1、B1、C1、D1、E1 单元格中输入 “免征标准”、“低标准”、“中等标准”和“高标准”,然 后分别在其下方的单元格内输入“800”、“1500”、 “2000”、“2000”。 接下来回到工作表Sheet1 中,选中D 列的D2 单元格输入 公式“=IF(C2<=Sheet2!A2," ",IF((C2-Sheet2!A2)<=Sheet2!B2,(C2-Sheet2!A2)*0.05,IF (C2-Sheet2!C2<=Sheet2!C2,(C2-Sheet2!C2)*0.08,IF(C2>Sh eet2!D2,(C2-Sheet2!D2)*0.2))))”,回车后即可计算出C2 单元格中的应缴个税金额。此后用户只需把公式复制到C3、 C4 等单元格,就可以计算出其他职工应缴纳的个税金额。 上述公式的特点是把个税的征收标准放到另一个工作表 中,如果征税标准发生了变化,用户只需修改相应单元格中的 数值,不需要对公式进行修改,可以减少发生计算错误的可能。 公式中的IF 语句是逐次计算的,如果第一个逻辑判断 “C2-Sheet2!A2)<=Sheet2!B2”成立,即工资收入低于征收标 准,则个税计算公式所在单元格被填入空格;如果第一个逻辑 判断式不成立,则计算第二个IF 语句,直至计算结束。假如 征税标准多于4 个,可以按上述继续嵌套IF 函数(最多7 个)。 四、函数应用案例──信息统计 使用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)。逻辑条件 44 “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”可以按 任意顺序排列。 |
|站长邮箱|小黑屋|手机版|Office中国/Access中国
( 粤ICP备10043721号-1 )
GMT+8, 2025-2-21 03:03 , Processed in 0.075229 second(s), 16 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.