Excel提取身份证号码生日函数的解释

在Excel表格中,如果B2单元格中输入身份证号码,可以是15位或者18位的身份证号码,在C2中输入的公式为“=IF(LEN(B2)=15,19,"")&MID(B2,7,6+(LEN(B2)=18)*2)”
帮我解释下这个公式什么意思,尤其是MID函数括号中最后“6+(LEN(B2)=18)*2”什么意思?

=IF(LEN(B2)=15,19,"") 这一部分主要是因为15位的旧号码的年份只有2位的,如果公式判断到是15位,就先加上“19”,如果不是15位,是18位的,就显示空白,即不用加“19”了。其实如果已经确定号码都是18位的,这部分公式是可以不要的,只要“&”符号后面部分的公式就可以了;

MID(B2,7,6+(LEN(B2)=18)*2) 这一部分的作用是提取证号中“年、月、日”部分的数字,MID()函数需要两个参数,1、要提取的数字从单元格的第几个开始;2、要提取多少个数字。因为不管是旧号码或新号码,“年、月、日”的数字都是从证号的第7位开始的,所以第1参数是7,而第2参数就通过 6+(LEN(B2)=18)*2 来决定了,其中:LEN(B2)=18 是一个独立的公式,是判断单元格B2的数字位数是否为18,结果会返回“真”和“假”,如果是真的结果再乘以2,结果也是2,但如果是假的结果再乘以2,结果就是0,而整个公式就得到如果是18位就提取8位的数字,如果是15位的号码,就提取6位的数字(当然这6位数字的前面通过第1部分的公式,先在前面加上“19”)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-31
我觉得你的这个公式有问题,好象解释不通啊?

看看我的这个公式:
=if(len(B2)=15,"19"&mid(B2,7,6),if(len(B2)=18,mid(B2,7,8),"Error"))

公式中有两个 if(),第一个是判断15位长码,第二个是判断18位长码,都不是的写入“Error”

这个公式清楚吗?
第2个回答  2010-07-31
IF(LEN(B2)=15,19,"")如果是15位,显示19,否则(18位)留空。
LEN(B2)=18返回的是逻辑值,15位时返回false(0),18位则返回true(1)。
MID(B2,7,6+(LEN(B2)=18)*2)表示从B2的第7位开始截取,长度为6+(LEN(B2)=18)*2,即15位时截取6位(6+0*2=6),18位时截取8(6+1*2=8)位。
&是连接符,将15位时返回的19和18位的空值和截取的字符串连接起来。
第3个回答  2010-07-31
第一个“=IF(LEN(B2)=15,19,"")&是讲如果身份证号码为15位,则在年份前加上19,6+(LEN(B2)=18)*2,这是个判定, 如果LEN(B2)=18,则为真,值为1,则MID函数取从7位起取6+1*2=8位数,如果LEN(B2)=18为假,值为0,则MID函数则从身份证7位起取6+0*2=6位数
第4个回答  推荐于2017-09-22
888888【860109】xxx 15位身份证
888888【19860109】xxxx 18位身份证

IF(LEN(B2)=15,19,"") 判断 省份证是 15位 还是 18位的 因为15位的里面不包括 19xx的19 所以要在算出来的年份前加上 19

MID(B2,7,6+(LEN(B2)=18)*2) 从第7为开始截取 字符串 省份证里 第七位开始时生日
截取长度 为 6+(LEN(B2)=18)*2 15位的长度为 6位 而18位的为 8位
(LEN(B2)=18)其实是当 布尔值来运算的 当 =18时 值为1 <>18时 为0本回答被提问者采纳
相似回答