按照出生日期计算年龄的公式大家一定不陌生: =DATEDIF(A2,TODAY(),"y") 但是在今天这个例子中,公式却得到了错误值: A列的日期是从系统导出的,并且是月日年的格式,难道和这个日期格式有关系吗? 经过测试,这种月日年格式的日期无法通过单元格格式设置或者是分列的方法转换为标准日期。 强调:分列被称为不规则日期的终结者,竟然对这种日期都无法处理。 看来只能通过公式进行转换了。 比较常规的思路是使用LEFT、MID和RIGHT函数将年月日分别提取出来,再用DATE函数进行转换,公式为: =DATEDIF(DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2)),TODAY(),"y") 转日期的这部分DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2))用到了四个函数,但是都很好理解,就不多说了。 想重点说一下的是下面这几种思路 思路1: =DATEDIF(RIGHT(A2,4)&"/"&LEFT(A2,5),TODAY(),"y") 这个思路没有将年月日分别提取后再合成日期,而是将年提取后放到最前面,把月日年变成了年月日。 思路2: =DATEDIF(MID(A2&"/"&A2,7,10),TODAY(),"Y") 这个思路就比较有意思了,没有提取年月日的任何一个信息,而是将月日年这个格式进行了合并,来看下A2&"/"&A2的效果是什么: 看明白了吧,思路是不是够新鲜。 有时候就是这样,大神写出来我们能看懂,但是自己就想不出来…… 不过既然已经明白这个思路了,就可以继续发挥一下: 将A2&"/"&A2换成REPT(A2&"/",2)也是一样的道理了。 =DATEDIF(MID(REPT(A2&"/",2),7,10),TODAY(),"Y") 怎么样,今天这个问题中你有什么收获吗? 或者在这个问题的解法上你有另外的思路,都欢迎留言分享! 怎么做练习才是学习Excel正确的打开方式? 1、首先独立思考必不可少,看见习题先独立思考,不懂就要问指的是独立思考之后还是不懂,不经过思考就提问那是对自己的不负责; 2、思考之后还不会怎么办?这个世界没有百度一下不会的,如果有,那就百度两下; 3、看了案例也不会做练习怎么办?那就加入老菜鸟的Excel学习群吧,还有老菜鸟的公众号每天推送教程,群聊可以让众多Excel老师和高手与你一起交流。 |
|