|
楼主 |
发表于 2010-4-21 10:14
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
=IF(LEN(M3)=15,M3,LEFT(REPLACE(M3,7,2,),15))
这一楼我们来谈谈身份证的减位。为什么我们要对18位数身份证号码减位呢,是想展示自己对函数的运用吗?绝对不是。我们都知道早期的身份证号是由15位数字编写而成的。
1、第l一6位数为行政区划代码;
2、第7—12位数为出生日期代码;
3、第13---15位数为分配顺序代码;
(1)、行政区划代码,是指公民第一次申领居民身份证时的常住户口所在地的行政地区。
(2)、出生日期代码,第7—8位数代表年份(年份前面二位数省略),第9—10位数代表月份(月份为l位数的前面加零)。第11一12位数代表日期(日期为1位数的前面加零)。
(3)、分配顺序代码,是按人口数统一合理分配以固定顺序给予每个人的顺序号.
这是就是我们早期15位身份证的编码结构,自1999年10月1日起在全国建立和实行公民身份证号码制度.公民身份证号码按照GB11643—1999《公民身份证号码》国家标准编制,由18位数字组成:
前6位为行政区划分代码,第7位至14位为出生日期码,第15位至17位为顺序码,第18位为校验码。
第18位号码是校验码,目的在于检测身份证号码的正确性,是由计算机随机产生的,所以不再是男性为单数,女性为双数,而以第十七位决定性别.
从上边的内容我们可以看出,18位数的身份证号是由15位升级而来的,升级的原则只是在原出生年份前增加了“19”,这样就不至于1910年和2010年相重复(因为这两年数取后边两位都是10年。)而第18位则是身份证号正确性的校验码。也就是说我们前边的编码输入是否正确,或是该号码本身是否正确,都可以通过校验码来检验出来。清楚了这个,我们就来看下这个函数公式吧:
=IF(LEN(M3)=15,M3,LEFT(REPLACE(M3,7,2,),15))
这里的IF函数因为前边已经讲过,不再赘述,这里我们主要来品一品LEN函数和REPLACE函数。
LEN也应用于:LENB。LEN 返回文本字符串中的字符数。LENB 返回文本字符串中用于代表字符的字节数。此函数用于双字节字符。语法:LEN(text):LENB(text)。Text 是要查找其长度的文本。空格将作为字符进行计数。
该函数在这里是以IF函数的参数出现的,它的主要功能是将我们原有为15位数的身份证号取15位,也就是将其原记录保存下来。
REPLACE也应用于:REPLACEB。REPLACE 使用其他文本字符串并根据所指定的字符数替换某文本字符串中的部分文本。REPLACEB 使用其他文本字符串并根据所指定的字符数替换某文本字符串中的部分文本。此函数专为双字节字符使用。
语法:REPLACE(old_text,start_num,num_chars,new_text)
REPLACEB(old_text,start_num,num_bytes,new_text)
Old_text 是要替换其部分字符的文本。
Start_num 是要用 new_text 替换的 old_text 中字符的位置。
Num_chars 是希望 REPLACE 使用 new_text 替换 old_text 中字符的个数。
Num_bytes 是希望 REPLACE 使用 new_text 替换 old_text 中字节的个数。
New_text 是要用于替换 old_text 中字符的文本。
从前边的解释中,我们可以看出,REPLACE函数在这里的主要作用是将18位数编号的第7-8位数去掉,然后交给LEFT函数,从16位中提取左边的15位,(即把验证码去掉)。这样就将原有的15位或是18位身份证号都统一成了15位,作为辅助列为我们后边的验证作准备。
[ 本帖最后由 宏业教育 于 2010-4-21 10:17 编辑 ] |
|