2.4 使用函数自动输入基本数据
在基础表单中,有些情况下,要输入的数据是一些已有的基本资料,这些基本资料是根据前面已经输入的数据查询或者计算出来的。例如,员工性别、出生日期可以根据已输入的身份证号码直接计算得到;年龄可以根据生日自动计算出来;工龄可以根据入职日期自动计算;产品规格可以根据产品名称从基本资料表中自动查找获取等。这些数据不需要再手工输入,可以直接使用函数提取。
2.4.1 从已输入的基本数据中提取和计算重要数据
案例2-7
有学生问“老师,如何从身份证号码中提取性别、生日,并计算截止到当天的年龄?”也就是说,已经输入了身份证号码,需要从这个身份证号码中把性别、生日和年龄这3个重要的信息数据提取出来,分别保存到单独的单元格中。
在从身份证号码中提取性别和生日时,需要使用的函数有IF、MID、ISEVEN(或者ISODD)、TEXT等,而计算年龄时,可以使用DATEDIF函数。
图2-49所示就是从身份证号码中提取性别、生日,计算年龄的例子。此时有关单元格的公式如下。
单元格C2,提取性别:
=IF(ISEVEN(MID(B2,17,1)),"女","男")
单元格D2,提取生日:
=1*TEXT(MID(B2,7,8),"0000-00-00")
单元格E2,计算年龄:
=DATEDIF(D2,TODAY(),"y")
图2-49 从身份证号码中提取性别和出生日期
根据《公民身份号码GB11643—1999》中有关公民身份证号码的规定,公民身份证号码是特征组合码,由17位数字本体码和1位数字校验码组成。排列顺序从左至右依次为:6位数字地址码、8位数字出生日期码、3位数字顺序码和1位数字校验码(校验码如果是数字10,就用罗马字母X来代替),如图2-50所示。
图2-50 身份证号码里的信息
第7位开始的连续8个数字是出生日期,使用MID函数将这8个数字取出,再用TEXT函数将其按照日期格式处理为文本型日期,最后把文本型日期转换为数值型日期。
第17位数字是判断性别,偶数是女,奇数是男。利用MID函数取第17位数字,再用ISEVEN判断是否为偶数,最后用IF函数处理判断的结果,在单元格中输入“女”或“男”。
函数说明:MID
MID函数用来从字符串中指定位置开始,取指定个数的字符。用法如下:
=MID(字符串,取数的起始位置,要提取的字符个数)
以图2-49的数据为例,公式“=MID(B2,17,2)”的结果就是第17位的数字8。
函数说明:ISEVEN
ISEVEN函数用来判断一个数字是否为偶数,如果是偶数,结果为TRUE。用法如下:
=ISEVEN(数字)
例如,公式“=ISEVEN(6)”的结果是TRUE,因为数字6是偶数。
公式“=ISEVEN(7)”的结果是FALSE,因为数字7不是偶数。
函数说明:IF
IF函数用来根据指定的条件,得到要么是A要么是B的结果。用法如下:
=IF(条件判断,条件成立的结果A,条件不成立的结果B)
例如,公式“=IF(A1>10,200,0)”,就是判断单元格A1的数据是否大于10,如果大于10,就输入200,否则就输入0。
函数说明:TEXT
TEXT函数用来把数字转换为指定格式的文字。用法如下:
=TEXT(数字,格式代码)
例如,公式“=TEXT(19751202,"0000-00-00")”的结果就是1975-12-02。
公式“=TEXT(TODAY(),"mmmm")”的结果是April(假设TODAY是2018年4月25日)。
函数说明:DATEDIF函数
DATEDIF函数用于计算指定的类型下,两个日期之间的期限。用法如下:
=DATEDIF(开始日期,截止日期,格式代码)
函数中的“格式代码”意义如下(字母不区分大小写)。
格式代码 意义
"Y" 时间段中的总年数
"M" 时间段中的总月数
"D" 时间段中的总天数
"YM" 两日期中多出的整数月数,忽略日期数据中的年和日
"MD" 两日期中多出的天数,忽略日期数据中的年和月
例如:某职员进公司日期为2001年3月20日,离职时间为2018年5月28日,那么他在公司工作了多少年、零多少月和零多少天?
● 整数年: =DATEDIF("2001-3-20","2018-5-28","Y"),结果是17。
● 零几个月:=DATEDIF("2001-3-20","2018-5-28","YM"),结果是2。
● 零几天: =DATEDIF("2001-3-20","2018-5-28","MD"),结果是8。
注意:DATEDIF是隐藏函数,在“插入函数”对话框中找不到。
2.4.2 从基本资料表中查询获取数据
当设计的数据管理模板是由几个表单构成,其中记录表的某些数据需要根据指定的条件,从基本资料表中查询出来,此时可以使用相关的查找函数来快速输入。
案例2-8
例如,在销售记录表中,根据输入的产品名称,自动输入该产品的规格,如图2-51所示。此时有关单元格的公式如下。
单元格C2,自动输入商品编码:
=VLOOKUP(B2,产品资料!$A:$C,2,0)
单元格D2,自动输入商品规格:
=VLOOKUP(B2,产品资料!$A:$C,3,0)
图2-51 利用公式自动输入商品编码和规格
函数说明:VLOOKUP
VLOOKUP函数用来从一个区域内,把满足指定条件的某列数据查找出来。用法如下:
=VLOOKUP(匹配条件值,查找区域,取数的列位置,匹配模式)
这个函数,我们将在后面的有关章节中进行详细介绍。
2.4.3 根据条件输入数据
有时,需要根据表单的某列数据,自动计算并输入另一个重要的数据,如年休假、工龄工资、津贴等。此时,也可以使用函数来处理。
案例2-9
图2-52所示就是一个年休假表单,根据每个人的工龄,自动输入该员工的年休假天数。这里规定,工作满1年不满10年的,休假5天;满10年不满20年的,休假10天;满20年及以上的,休假15天。
此时,单元格F2的年休假计算公式为:
=IF(E2<1,0,IF(E2<10,5,IF(E2<20,10,15)))
这是一个嵌套IF函数的具体应用,关于如何快速准确输入嵌套IF,我们将在后面的章节进行详细介绍。
图2-52 利用函数自动计算输入重要数据