![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
=TEXT((LEN(B149)=15)*19&MID(B149,7,6+2*(LEN(B149)=18)),"#-00-00")
这个是从身份证上提取出生年月日并且直接变成文本格式,我想求大神帮我讲一下解释一下公式的构造比如15,19等等都是什么意思代表什么,谢谢。...
这个是从身份证上提取出生年月日并且直接变成文本格式,我想求大神帮我讲一下解释一下公式的构造比如15,19等等都是什么意思代表什么,谢谢。
展开
1个回答
展开全部
解释公式很费事的。
=TEXT((LEN(B149)=15)*19&MID(B149,7,6+2*(LEN(B149)=18)),"#-00-00")
1、LEN()——字符串个数函数
(LEN(B149)=15)*19:当LEN(B149)=15时(第一代身份证)为TRUE,返回1,1*19=19;否则为FALSE,返回0,0*19=0,也就是第一代身份证的加“19”
2*(LEN(B149)=18):同理,第二代身份证=2*1=2,否则2*0=0
2、MD()——提取中间字符串函数。语法:MID(引用,左起第几位,共几位)
MID(B149,7,6+2*(LEN(B149)=18)):提取B149左起第7位,共6个字符串(第二代身份证的+2共8个字符串)。
3、TEXT()——转换文本格式函数
TEXT((LEN(B149)=15)*19&MID(B149,7,6+2*(LEN(B149)=18)),"#-00-00"):按引用内容转换成"#-00-00"格式,若引用为19780519,则转换成1978-05-19。
话外,公式还可以简化些:
=TEXT(MID(B149,7,LEN(B149)*2/3-4),"#-00-00")
或
=TEXT(IF(LEN(B149)=15,"19"&MID(B149,7,6),MID(B149,7,8)),"#-00-00")
=TEXT((LEN(B149)=15)*19&MID(B149,7,6+2*(LEN(B149)=18)),"#-00-00")
1、LEN()——字符串个数函数
(LEN(B149)=15)*19:当LEN(B149)=15时(第一代身份证)为TRUE,返回1,1*19=19;否则为FALSE,返回0,0*19=0,也就是第一代身份证的加“19”
2*(LEN(B149)=18):同理,第二代身份证=2*1=2,否则2*0=0
2、MD()——提取中间字符串函数。语法:MID(引用,左起第几位,共几位)
MID(B149,7,6+2*(LEN(B149)=18)):提取B149左起第7位,共6个字符串(第二代身份证的+2共8个字符串)。
3、TEXT()——转换文本格式函数
TEXT((LEN(B149)=15)*19&MID(B149,7,6+2*(LEN(B149)=18)),"#-00-00"):按引用内容转换成"#-00-00"格式,若引用为19780519,则转换成1978-05-19。
话外,公式还可以简化些:
=TEXT(MID(B149,7,LEN(B149)*2/3-4),"#-00-00")
或
=TEXT(IF(LEN(B149)=15,"19"&MID(B149,7,6),MID(B149,7,8)),"#-00-00")
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询