excel日期函数 做人事管理日期计算

发布 2019-07-09 14:09:55 阅读 1927

示例:做一个美观简洁的人事资料分析表。

1、 示例说明。

在如图6所示的某公司人事资料表中,除了编号、员工姓名、身份证号码以及参加工作时间为手工添入外,其余各项均为用函数计算所得。

图6在此例中我们将详细说明如何通过函数求出:

1)自动从身份证号码中提取出生年月、性别信息。

2)自动从参加工作时间中提取工龄信息。

2、身份证号码相关知识。

在了解如何实现自动从身份证号码中提取出生年月、性别信息之前,首先需要了解身份证号码所代表的含义。我们知道,当今的身份证号码有15/18位之分。早期签发的身份证号码是15位的,现在签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,就成了18位。

这两种身份证号码将在相当长的一段时期内共存。两种身份证号码的含义如下:

1)15位的身份证号码:1~6位为地区**,7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期,第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。

2)18位的身份证号码:1~6位为地区**,7~10位为出生年份(4位),11~12位为出生月份,13~14位为出生日期,第15~17位为顺序号,并能够判断性别,奇数为男,偶数为女。18位为效验位。

3、 应用函数。

在此例中为了实现数据的自动提取,应用了如下几个excel函数。

1)if函数:根据逻辑表达式测试的结果,返回相应的值。if函数允许嵌套。

语法形式为:if(logical_test, value_if_true,value_if_false)

2)concatenate:将若干个文字项合并至一个文字项中。

语法形式为:concatenate(text1,text2……)

3)mid:从文本字符串中指定的起始位置起,返回指定长度的字符。

语法形式为:mid(text,start_num,num_chars)

4)today:返回计算机系统内部的当前日期。

语法形式为:today()

5)datedif:计算两个日期之间的天数、月数或年数。

语法形式为:datedif(start_date,end_date,unit)

6)value:将代表数字的文字串转换成数字。

语法形式为:value(text)

7)right:根据所指定的字符数返回文本串中最后一个或多个字符。

语法形式为:right(text,num_chars)

8)int:返回实数舍入后的整数值。语法形式为:int(number)

4、 公式写法及解释(以员工andy为例说明)

说明:为避免公式中过多的嵌套,这里的身份证号码限定为15位的。如果您看懂了公式的话,可以进行简单的修改即可适用于18位的身份证号码,甚至可适用于两者并存的情况。

1)根据身份证号码求性别。

if(value(right(e4,3))/2=int(value(right(e4,3))/2),"女","男")

公式解释:a. right(e4,3)用于求出身份证号码中代表性别的数字,实际求得的为代表数字的字符串。

b. value(right(e4,3)用于将上一步所得的代表数字的字符串转换为数字。

c. value(right(e4,3))/2=int(value(right(e4,3))/2用于判断这个身份证号码是奇数还是偶数,当然你也可以用mod函数来做出判断。

d. =if(value(right(e4,3))/2=int(value(right(e4,3))/2),"女","男")及如果上述公式判断出这个号码是偶数时,显示"女",否则,这个号码是奇数的话,则返回"男"。

2)根据身份证号码求出生日期。

concatenate("19",mid(e4,7,2),"mid(e4,9,2),"mid(e4,11,2))

公式解释:a. mid(e4,7,2)为在身份证号码中获取表示年份的数字的字符串。

b. mid(e4,9,2) 为在身份证号码中获取表示月份的数字的字符串。

c. mid(e4,11,2) 为在身份证号码中获取表示日期的数字的字符串。

d. concatenate("19",mid(e4,7,2),"mid(e4,9,2),"mid(e4,11,2))目的就是将多个字符串合并在一起显示。

3)根据参加工作时间求年资(即工龄)

concatenate(datedif(f4,today(),y"),年",datedif(f4,today(),ym"),个月")

公式解释:a. today()用于求出系统当前的时间。

b. datedif(f4,today(),y")用于计算当前系统时间与参加工作时间相差的年份。

c. datedif(f4,today(),ym")用于计算当前系统时间与参加工作时间相差的月份,忽略日期中的日和年。

d. =concatenate(datedif(f4,today(),y"),年",datedif(f4,today(),ym"),个月")目的就是将多个字符串合并在一起显示。

5. 其他说明。

在这张人事资料表中我们还发现,创建日期:31-05-2001时显示在同一个单元格中的。这是如何实现的呢?

难道是手工添加的吗?不是,实际上这个日期还是变化的,它显示的是系统当前时间。这里是利用函数 today 和函数 text 一起来创建一条信息,该信息包含着当前日期并将日期以"dd-mm-yyyy"的格式表示。

具体公式写法为:="创建日期:"&text(today(),dd-mm-yyyy")

至此,我们对于文本函数、日期与时间函数已经有了大致的了解,同时也设想了一些应用领域。相信随着大家在这方面的不断研究,会有更广泛的应用。