关于LZ公式的详解
(首先应说明:逻辑运算参与计算,True=1,False=0,* 即乘号,+即加号)
(LEN(A1)=15)*19 如果A1中15位,1*19=19,否则为0*19=0
此部分为在15位号码前加上 19,但如果是2000年出生,则为错误结果(此部分就交电脑判断,不宜画蛇添足,修正公式在后)
MID(A1,7,6+(LEN(A1)=18)*2) 从号码的第7位起取字,15位号码取6(6+0*2),18位取8个(6+1*2=6+2=8)
TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"00-00-00")
将取出的字用格式显示,即加上日期分隔符 -
Datedif 函数为用来计算日期间隔,"y"指计算周期为年
此公式应简化为:
=DATEDIF(TEXT(MID(A1,7,6+(LEN(A1)=18)*2),"00-00-00"),TODAY(),"y" )
比如你试一个08年的身份证号
370201080304543X
这是根据身份证号码(15位和18位通用)自动提取性别和出生年月的自编公式.
说明:公式中的b2是身份证号
1、根据身份证号码求性别:
=if(len(b2)=15,if(mod(value(right(b2,3)),2)=0,"女","男"),if(len(b2)=18,if(mod(value(mid(b2,15,3)),2)=0,"女","男"),"身份证错"))
2、根据身份证号码求出生年月:
=if(len(b2)=15,concatenate("19",mid(b2,7,2),".",mid(b2,9,2)),if(len(b2)=18,concatenate(mid(b2,7,4),".",mid(b2,11,2)),"身份证错"))
3、根据身份证号码求年龄:
=if(len(b2)=15,year(now())-1900-value(mid(b2,7,2)),if(len(b2)=18,year(now())-value(mid(b2,7,4)),"身份证错")
这是根据身份证号码(15位和18位通用)自动提取性别和出生年月的自编公式:
说明:公式中的B2是身份证号
1、根据身份证号码求性别: =IF(LEN(B2)=15,IF(MOD(VALUE(RIGHT(B2,3)),2)=0,"女","男"),IF(LEN(B2)=18,IF(MOD(VALUE(MID(B2,15,3)),2)=0,"女","男"),"身份证错"))
2、根据身份证号码求出生年月日: =IF(LEN(B2)=15,CONCATENATE("19",MID(B2,7,2),".",MID(B2,9,2)),IF(LEN(B2)=18,CONCATENATE(MID(B2,7,4),".",MID(B2,11,2)),"身份证错"))
3、根据身份证号码求年龄: =IF(LEN(B2)=15,year(now())-1900-VALUE(MID(B2,7,2)),if(LEN(B2)=18,year(now())-VALUE(MID(B2,7,4)),"身份证错"))
其他通用公式:(新旧身份证号通用)
(1)、根据“身份证号”获得“年龄”
A1为身份证号,
B1中输入公式
=DATEDIF(TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00"),TODAY(),"y")
(2)、根据出生“年-月-日”获得“年龄”
B1为出生日期,
C1中输入公式
=INT((TODAY()-B1)/365)
或者
=DATEDIF(B1,TODAY(),"Y")
判断身份证格式是否正确:
B1为身份证号,
C1中输入公式
=IF(OR(LEN(B1)=18,LEN(B1)=15),IF(LEN(B1)=18,IF(OR(MONTH(DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)),1*(MID(B1,13,2))))<>1*(MID(B1,11,2)),DAY(DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)),1*(MID(B1,13,2))))<>1*(MID(B1,13,2))),"月日错误",""),IF(LEN(B1)=15,IF(OR(MONTH(DATE(1*(MID(B1,7,2))+1900,1*(MID(B1,9,2)),1*(MID(B1,11,2))))<>1*(MID(B1,9,2)),DAY(DATE(1*(MID(B1,7,2))+1900,1*(MID(B1,9,2)),1*(MID(B1,11,2))))<>1*(MID(B1,11,2))),"月日错误",""))),"身份证位数不对")&IF(AND(LEN(B1)=18,1*MID(B1,7,4)>YEAR(TODAY())-6),"年份错误","")
假设C2为身份证号,输入公式
=IF(LEN(C2)=15,19&MID(C2,7,6),MID(C2,7,8))
这是获得出生日期
=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女")
这是区分性别
dateif函数是EXCEL 隐藏函数 具体用法网上很好找到!这里不解释
TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"00-00-00")
TEXT函数也很好理解也不解释 就说
(LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2)首先讲述一下身份证
18位的身份证号码跟15位身份证号码的区别在于出生年份上多了2 位,末尾多了一位数字 。
比如你的生日是1980/08/08
那你的旧身份证号码因该是XXXXXX800808XXX
新号码就是XXXXXX19800808XXXX
这个函数的意思是身份证长15的时候呢TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2)计算的时候就是
1 *19&MID(A1,7,6+(0)*2
这时候公式里面的LEN(A1)=15 结果就是1 (LEN(A1)=18)结果就是0 EXCEL TRUE FALSE 分别是1 0 来表示的
刚才说了身份证了 15位 只要走第7位开始取6个数字就好了 但是象89年08月08日这样的 要认为的+19 变成1989/08/08然后再DATEIF计算
18位么 就也一样 意思走7位开始取8个长度的数字 因为他本来就带年份的 所以0*19 就是0 6+(LEN(A1)=18)*2 正好是8个长度
其实*就是乘号 主要是看EXCEL 里面TRUE FALSE 返回值参与运算
2000出身后这个公式失效~
公式中的*号是什么意思?*2是什么意思?+号是什么意思
* :表示数字之间相乘
*2:表示chenyu乘于2
+:表示数字之间相加