• Excel—身份证生日提取


     


    一、只有18位的身份证号码

    如:

    身份证号

    330682199302264000

    41120019890823729X

    231081199002256839

    131101198203154666

    360300198205270958

    11010519491231002X

    计算步骤:

    step1:提取生日字符串:

    =MID(A2,7,8)

    ,生日从第七位开始,共八个数。

    image

    step2:这一步,可以分为两种方法:


    方法一:采用分列工具

    1.将公式生成的日期复制:

    image

    2.在同一列粘贴成“值”的格式:

    image

    3.选择需要进行分列的生日:

    image

    4.在“数据”中点击“分列”:

    image

    5.按如下步骤进行:

    勾选“固定宽度”

    image

    在生日年份和月份以及月份和日期之间对应的红色区域中点击,建立分割线:

    image

    在第三步勾选“日期”,点击完成:

    image

    该字符串被分解成三个独立的单元:

    image

    6.在新的一列中输入公式

    =DATE(B2,C2,D2)

    ——之前的年月日,完成。

    image

    就可以得到身份证提取的生日了。


    方法二:使用公式

    1.将字符串以0-00-00的格式显示:

    =TEXT(B2,"0-00-00")

    image

    一步完成。



    二、只有15位身份证号码

    这种情况基本不会出现的,即使出现了,专门立栏也没必要,直接进入下一节。



    三、15位身份证号码和18位身份证号码并存

    例如:

    image

    step1:提取生日字符串:

    18位身份证,从第7位开始,提取8个数字;

    15位身份证,从第7位开始,提取6个数字。

    因此需要使用IF函数,根据身份证号的长度,选择提取位数的长度:

    =MID(A2,7,IF(LEN(A2)=18,8,6))

    image

    step2:将提取的字符串,以特定格式表示:

    =TEXT(MID(A2,7,IF(LEN(A2)=18,8,6)),"0-00-00")

    image

    step3:转为时间序列

    现在需要解决这样一个问题,就是15位身份证日期显示错误的问题:

    解决方法是,通过乘法将它转变为时间序列:

    =1*TEXT(MID(A2,7,IF(LEN(A2)=18,8,6)),"0-00-00")

    image

    step3:最后转为日期

    =TEXT(1*TEXT(MID(A2,7,IF(LEN(A2)=18,8,6)),"0-00-00"),"yyyy-mm-dd")

    image

    之前的TEXT函数不能转为”yyyy-mm-dd”的原因,是因为年份前两位缺少,现在可以直接通过时间序列将其转为日期了。

    注:yyyy-mm-dd是日期格式的一种,而0-00-00只是文本一种显示格式。


    四、最后的Plan B

    经过计算,通过IF函数确定选取的字符数,与LEN(A2)/2.2的结果是一致的。

    =TEXT(1*TEXT(MID(A2,7,LEN(A2)/2.2),"0-00-00"),"YYYY-MM-DD")

    image


     

    五、计算年龄

    作为一个拓展,可以通过日期计算他/她的年龄。

    =YEAR(TODAY())-YEAR(C2)

    函数TODAY()不需要参数,直接返回今天的日期,如2008-08-08。

    函数YEAR返回日期的年份。

    image

  • 相关阅读:
    TranslateAnimation 运行动画后实际位置不正确问题
    Linux下如何编译并运行C程序
    row_number() OVER (PARTITION BY COL1 ORDER BY COL2)
    C++软件开发常用辅助软件——gprof
    C++软件开发常用辅助软件——Cppcheck
    C++软件开发常用辅助软件——SCons
    C++软件开发常用辅助软件——Valgrind
    救援linux
    C/C++代码覆盖率生成
    排列的逆
  • 原文地址:https://www.cnblogs.com/shadrach/p/5987333.html
Copyright © 2020-2023  润新知