已知基础信息:

ABC
1张三XXXXXX20000101XXXX

提取出生年:

=MID(C1,7,4)

计算年龄(根据出生年):

=YEAR(TODAY())-MID(C1,7,4)

注:TODAY为当前日期,year提取年份

提取生日:

=TEXT(MID(C1,7,8),"0-00-00")

注:TEXT提取数值并转为指定格式

计算年龄(根据生日计算):

=DATEDIF(TEXT(MID(C1,7,8),"0-00-00"),TODAY(),"y")

注:DATEDIF为隐藏函数


DATEDIF函数

语法:

=DATEDIF (start_date,end_date,unit)

效验身份证

=IF(LEN(C1)=0,"无",IF(LEN(C1)=8,"仅生日",IF(LEN(C1)<>18,"位数不对",IF(CHOOSE(MOD(MID(C1,1,1)*7+MID(C1,2,1)*9+MID(C1,3,1)*10+MID(C1,4,1)*5+MID(C1,5,1)*8+MID(C1,6,1)*4+MID(C1,7,1)*2+MID(C1,8,1)*1+MID(C1,9,1)*6+MID(C1,10,1)*3+MID(C1,11,1)*7+MID(C1,12,1)*9+MID(C1,13,1)*10+MID(C1,14,1)*5+MID(C1,15,1)*8+MID(C1,16,1)*4+MID(C1,17,1)*2,11)+1,1,0,"X",9,8,7,6,5,4,3,2)=IF(ISNUMBER(RIGHT(C1,1)*1),RIGHT(C1,1)*1,"X"),"正确","错误"))))

使用相关:

  • strat_date<end_date
  • unit相关参数,需要带引号
Unit返回结果
"Y "一段时期内的整年数。
"M "一段时期内的整月数。
"D "一段时期内的天数。
"MD "start_date 与 end_date 之间天数之差。 忽略日期中的月份和年份。重要: 不推荐使用“MD”参数,因为存在相关已知限制。 
"YM "start_date 与 end_date 之间月份之差。 忽略日期中的天和年份
"YD "start_date 与 end_date 的日期部分之差。 忽略日期中的年份。

示例:

start_dateend_date公式描述(结果)
1/1/20011/1/2003=DATEDIF(Start_date,End_date,"Y")一段时期内的两个整年 (2)
6/1/20018/15/2002=DATEDIF(Start_date,End_date,"D")2001 年 6 月 1 日和 2002 年 8 月 15 日之间的天数为 440 (440)
6/1/20018/15/2002=DATEDIF(Start_date,End_date,"YD")忽略日期中的年份,6 月 1 日和 8 月 15 日之间的天数为 75 (75)

参考链接: https://support.microsoft.com/zh-cn/office/datedif-%E5%87%BD%E6%95%B0-25dba1a4-2812-480b-84dd-8b32a451b35c

最后修改:2022 年 01 月 16 日
如果觉得我的文章对你有用,请随意赞赏