加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何快速转换出生年月为周岁

(2011-10-07 19:39:53)
标签:

excel

电子表格

出生年月

周岁

转换

杂谈

分类: 电脑应用

如何快速转换出生年月为周岁

前两天,同事问我这样一个问题:如何在已有的表格中,快速转换出生年月为周岁。因为,有的要求填写老师的周岁,而一般的表格都填写的是出生年月。因此,如何快速进行相关的转换,将会大大地缩短计算时间。

由于我以前也没有接触过这样的问题,而她说总校的会计计算时非常容易,一拖就实现了。但我知道这里面一定要有公式的存在,但一时之间又想不出具体怎么应用了。于是,只好让同事自己手动计算了。但过了这件事以后,自己总有些耿耿于怀,这个问题应该能很容易的解决。以前也遇到过如何从身份证中提取出生年月的问题,只要搞清楚问题的关键,一切都应该不是什么问题。

抱着研究问题的目的,来分析一下这个问题的解决思路:既然是求周岁,我们都知道计算的方法是看出生的月份,如果出生的月份在一月到八月,周岁是实际虚岁年龄减一岁即可,即周岁的计算方法是用现在的年份减去相应的出生年份;如果出生的月份在九月到十二月,周岁则是实际虚岁年龄减两岁,即周岁的计算方法是用现在的年份减去相应的出生年份再减去一。

知道了这个方法就好办了,只要我们找好了关系就容易了。问题的关键就在于判断月份在什么范围内,从而来判断周岁是减一岁还是减两岁,因此必须用到IF条件判断语句;而要判断出生月份,则需要从出生年月中提取出月份,从而进行判断,因此必须用到MID函数;为了保证出生月份在合法的范围内,则必须使用AND条件语句。像其它可能还要用到日期函数求出当前的日期,要用到YEAR()函数,转换文本成数值函数VALUE(),等等。

这就涉及一个问题了,输入的出生年月是按什么格式输入的。比如说同事要解决的这个问题,它的出生年月格式是按如下格式输入的:

http://s13/middle/5fc04b6dhaeb47822c64c&690

    我先用公式提取出月份来,公式为mid(a2,6,2),即从A2单元格中的第6位开始取2个字符。因为年和月份中间有一个分隔符,而月份只有两位而已。只要填完一个单元格,其它就用拖拉柄复制即可。如下图:

http://s6/middle/5fc04b6dhaeb478320165&690

    这时候,我们发现一个问题:那就是如果出生月份是十月,则会出现显示不正确的结果。为什么呢?因为这里面的单元格格式是数值,设置为后面显示两位小数,但我们都知道数值的显示正常是不显示后面的无用0.但这样一来,很显然结果不是我们想要的。

这样处置的结果可以采取转换成文本的格式输入,即可正常显示了。如下图:


http://s16/middle/5fc04b6dhaeb478508f6f&690

解决了这个问题,同样可以求出出生的年份,公式为mid(a2,1,4),在A2单元格中数据中从第1个字符开始取4个字符,便可以取出出生的年份。如下图:


http://s1/middle/5fc04b6dhaeb4785fd330&690

    求出当前的年份,公式为year(today()),即可显示出当前的年份。这里面涉及到了两个日期函数,一个是year() 和today(),第一个函数必须有参数,第二个函数没有参数。如下图:


http://s14/middle/5fc04b6dhaeb4788da27d&690

    接下来就是最主要的判断语句了。主要是一个IF语句,为了叙述简便,我们可以把这个复杂的公式分解成几个部分来说,只要明白了其中的道理再把它们合到一块即可。如下图:


http://s3/middle/5fc04b6dhaeb48e9e0b12&690

判断公式为:

IF(AND(VALUE(H2)>8,VALUE(H2)<=12),J2-I2-1,IF(AND(VALUE(H2)>0,VALUE(H2)<=8),J2-I2, ”你的生日不合法”))

解释一点:其实对于输入合法的出生年月,其实用下面这个公式也可以完成:

IF(VALUE(H2)>8,YEAR(TODAY())-VALUE(I2)-1,YEAR(TODAY())-VALUE(I2))。也就是判断出生月份大于8即可,最终也能得到想要的结果,如下图

http://s9/middle/5fc04b6dhaeb478f85b78&690

    但我们知道这样的处理结果是不科学的,不具有容错能力,因此推荐换成上面的公式,最终的结果如下图:


http://s5/middle/5fc04b6dhaeb479263444&690

我们仔细看会发现,两者的结果完全一样。因此许多朋友就会觉得使用哪一种都无所谓了,但如果我们在录入出生年月的时候出现了失误,那么用容错的公式就会显得很有必要。下面我就以一个出错的例子来演示一下最终的结果。


http://s14/middle/5fc04b6dhaeb47953ed3d&690

    从这个例子来看就可以看出公式的严谨对于结果的正确性有多么重要,因此希望朋友们在选择公式的时候还是要严谨一些,从而可以避免出现一些逻辑之外的错误。

    现在,这个快速转换出生年月为周岁的方法便介绍完了。我们是用分解的方法来说明的,是为了让朋友们更清楚一些。最后,只要你弄明白了其中的道理,完全可以把这些分解的语句合成到一个单元格之中。如下图:


http://s10/middle/5fc04b6dhaeb479910da9&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有