图片演示,手把手教你如何批量将身份证号码中间数变成星号

图片演示,手把手教你如何批量将身份证号码中间数变成星号
图片演示,手把手教你如何批量将身份证号码中间数变成星号

比如有以下的身份证号码A列,要将其变成D列的样子

第一步:在B1中输入以下公式,求取最左侧6位;

第二步:在C1中输入以下公式,求取最右侧4位;

第三步:在D1中输入以下公式,求取最后结果;

第四步:分别向下拖拽B1和C1右下角黑点,将公式运行到所有表格;

第五步:最后显示;

excel表格里怎么批量把身份证号前面的

excel表格里怎么批量把身份证号前面的*去掉? 你这个直接用right函数就可以了,right函数是文本函数,所以不会出现后面是000的情况。 怎么把身份证号码从word里批量复制到excel里? 切记!!首先要把EXCEL的单元格格式设为文本格式,否则18位身份证号进去就kjn#$# *&,WORD中的号码若是每行一个的,你直接复制、粘贴过去,就会在EXCEL的一个列里按行放置了,最好是在WORD里按行处理后先复制、粘贴的TXT的纯文本文件里(例如WINDOWS记事本),去掉WORD里的格式,再复制到EXCEL里 在EXCEL中怎么从身份证号中批量提取出生年月? 身份证号码都是现在都是18位的,从第7位到14位就是出生年月,在EXCEL中我们假设A1单元格是身份证号码,则你在B2输入=MID(A1,7,4)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2) 如何大批量去掉Excel中身份证号码前的'符号? 假设身份证号写在B列,在B列后面插入一个新C列 C1单元格写入公式=SUBSTITUTE(B1,"'","")或=SUBSTITUTE(B1,"'",)下拉复制公式或双击填充柄。完成后选中C列---右键---选择性粘贴----数值---确定---再选中C列---右键----设置单元格格式---数字选项卡---文本---确定后删去B列---新的B列就是你要的数据样式 Excel中能否实现批量给身份证打XX的功能? 隐藏出生日期:B1输入公式 =IF(LEN(A1)=18,LEFT(A1,8)&"******"&RIGHT(A1,4),LEFT(A1,6)&"******"&RIGHT(A1,3)) 如何在Excel中批量审核身份证号码? 身份证号码验证功能公式(仅限18为身份证号码): =IF(AND(LEN(F5)=18,MID("10X98765432",MOD(SUM(MID(F5,{1,2,3,4,5,6,7,8,9,10,11,1 2,13,14,15,16,17},1)*{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}),11)+1,1)=MID(F5,18,1)),"身份 证验证正确","错误")本人使用F5单元格作为身份证所在单元格,请自行调整单元格位置。公式中一共引用3次F5单元格。

身份证号码前6位表示的地区一览表

110000 北京市 110100 市辖区110101 东城区110102 西城区110103 崇文区110104 宣武区110105 朝阳区110106 丰台区110107 石景山区110108 海淀区110109 门头沟区110111 房山区110112 通州区110113 顺义区110114 昌平区110115 大兴区110116 怀柔区110117 平谷区110200 县110228 密云县110229 延庆县 120000 天津市 120100 市辖区120101 和平区120102 河东区120103 河西区120104 南开区120105 河北区120106 红桥区120107 塘沽区120108 汉沽区120109 大港区120110 东丽区120111 西青区120112 津南区120113 北辰区120114 武清区120115 宝坻区120200 县120221 宁河县120223 静海县120225 蓟县 130000 河北省 130100 石家庄市130101 市辖区130102 长安区130103 桥东区130104 桥西区130105 新华区130107 井陉矿区130108 裕华区130121 井陉县130123 正定县130124 栾城县130125 行唐县130126 灵寿县130127 高邑县130128 深泽县130129 赞皇县130130 无极县130131 平山县130132 元氏县130133 赵县130181 辛集市130182 藁城市130183 晋州市130184 新乐市130185 鹿泉市130200 唐山市130201 市辖区130202 路南区130203 路北区130204 古冶区130205 开平区130207 丰南区130208 丰润区130223 滦县130224 滦南县130225 乐亭县130227 迁西县130229 玉田县130230 唐海县130281 遵化市130283 迁安市130300 秦皇岛市130301 市辖区130302 海港区130303 山海关区130304 北戴河区130321 青龙满族自治县130322 昌黎县130323 抚宁县130324 卢龙县130400 邯郸市130401 市辖区130402 邯山区130403 丛台区130404 复兴区130406 峰峰矿区130421 邯郸县130423 临漳县130424 成安县130425 大名县130426 涉县130427 磁县130428 肥乡县130429 永年县130430 邱县130431 鸡泽县130432 广平县130433 馆陶县130434 魏县130435 曲周县130481 武安市130500 邢台市130501 市辖区130502 桥东区130503 桥西区130521 邢台县130522 临城县130523 内丘县130524 柏乡县130525 隆尧县130526 任县130527 南和县130528 宁晋县130529 巨鹿县130530 新河县130531 广宗县130532 平乡县130533 威县130534 清河县130535 临西县130581 南宫市130582 沙河市130600 保定市130601 市辖区130602 新市区130603 北市区130604 南市区130621 满城县130622 清苑县130623 涞水县130624 阜平县130625 徐水县130626 定兴县130627 唐县130628 高阳县130629 容城县130630 涞源县130631 望都县130632 安新县130634 曲阳县130635 蠡县130636 顺平县130637 博野县130638 雄县130681 涿州市130682 定州市130683 安国市130684 高碑店市130700 张家口市130701 市辖区130702 桥东区130703 桥西区130705 宣化区130706 下花园区130721 宣化县130722 张北县130723 康保县130724 沽源县130725 尚义县130726 蔚县130727 阳原县130728 怀安县130729 万全县130730 怀来县130731 涿鹿县130732 赤城县130733 崇礼县130800 承德市130801 市辖区130802 双桥区130803 双滦区130804 鹰手营子矿区130821 承德县130822 兴隆县130823 平泉县130824 滦平县130825 隆化县130826 丰宁满族自治县130827 宽城满族自治县130828 围场满族蒙古族自治县130900 沧州市130901 市辖区130902 新华区130903 运河区130921 沧县130922 青县130923 东光县130924 海兴县130925 盐山县130926 肃宁县130927 南皮县130928 吴桥县130929 献县130930 孟村回族自治县130981 泊头市130982 任丘市130983 黄骅市130984 河间市131000 廊坊市131001 市辖区131002 安次区131003 广阳区131022 固安县131023 永清县131024 香河县131025 大城县131026 文安县131028 大厂回族自治县131081 霸州市131082 三河市131100 衡水市131101 市辖区131102 桃城区131121 枣强县131122

Excel判断身份证号校验码

Excel判断身份证号校验码 假设在一个工作表中:A列是姓名,B列是身份证号码,C列是备注。在B列中输入18位身份证号码后,在C2单元格中输入计算数组公式: =RIGHT(B2,1)=MID("10X98765432",MOD(SUM(MID(B2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1) 然后再将该公式复制给C列其他单元格。 公式的计算结果是一个逻辑值,True表示校验正确,即计算出来的校验码与输入的相同,而False则表示校验错误。值得注意的是,使用校验码进行校验判断为正确的身份证号码未必是正确的,但判断为错误的则肯定是错误的,即通过校验的只是身份证号码正确的必要条件而非充分条件。当然,在实际输入中,身份证号码输入错误而校验正确的情况很少见。在大多数情况下,使用校验码进行校验可以大大提高身份证号码输入的正确性。 RIGHT 根据所指定的字符数返回文本字符串中最后一个或多个字符。 MID 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。 MOD 返回两数相除的余数。SUM 返回某一单元格区域中所有数字之和。ROW 返回引用的行号。INDIRECT 返回由文本字符串指定的引用。 或者输入数组公式: =IF(LEN(B2)<>18,"错误 ",IF(MID("10X98765432",MOD(SUM(MID(B2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=MID(B2,18,1), "正确","错误"))

身份证号码第十八位效验码的计算方法

身份证号码第十八位效验码的计算方法- godson_h的专栏- CSDN 博客 默认分类2010-04-10 07:56:04 阅读141 评论0 字号:大中小订阅 身份证号码第十八位效验码的计算方法 关于身份证第18是怎么计算的,原理如下:根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码(身份证前六位)表示编码对象常住户口所在县(市、旗、区)的行政区划代码。(所有区域的编码可以到这个网站https://www.360docs.net/doc/13340990.html,/tjbz/index.htm 查询到最新的县及县以上的行政编码资料。) 生日期码(身份证第七位到第十四位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。 顺序码(身份证第十五位到十七位)为同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。 校验码(身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。 第十八位数字的计算方法为: 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 2.将这17位数字和系数相乘的结果相加。 3.用加出来和除以11,看余数是多少? 4余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为 1 0 X 9 8 7 6 5 4 3 2。 5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。 例如:某男性的身份证号码是340524************。我们要看看这个身份证是不是合法的身份证。 首先:我们得出,前17位的乘积和是189 然后:用189除以11得出的结果是17 + 2/11,也就是说余数是2。 最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

身份证号码对应的地区

身份证号码前6位表示的地区对照表 110000 北京市 110100 市辖区 110101 东城区 110102 西城区 110103 崇文区 110104 宣武区 110105 朝阳区 110106 丰台区 110107 石景山区 110108 海淀区 110109 门头沟区 110111 房山区 110112 通州区 110113 顺义区 110114 昌平区 110115 大兴区 110116 怀柔区 110117 平谷区 110200 县 110228 密云县 110229 延庆县 120000 天津市 120100 市辖区 120101 和平区 120102 河东区 120103 河西区 120104 南开区 120105 河北区 120106 红桥区 120107 塘沽区 120108 汉沽区 120109 大港区 120110 东丽区 120111 西青区 120112 津南区 120113 北辰区 120114 武清区 120115 宝坻区 120200 县 120221 宁河县 120223 静海县 120225 蓟县 130000 河北省

130100 石家庄市 130101 市辖区 130102 长安区 130103 桥东区 130104 桥西区 130105 新华区 130107 井陉矿区 130108 裕华区 130121 井陉县 130123 正定县 130124 栾城县 130125 行唐县 130126 灵寿县 130127 高邑县 130128 深泽县 130129 赞皇县 130130 无极县 130131 平山县 130132 元氏县 130133 赵县 130181 辛集市 130182 藁城市 130183 晋州市 130184 新乐市 130185 鹿泉市 130200 唐山市 130201 市辖区 130202 路南区 130203 路北区 130204 古冶区 130205 开平区 130207 丰南区 130208 丰润区 130223 滦县 130224 滦南县 130225 乐亭县 130227 迁西县 130229 玉田县 130230 唐海县 130281 遵化市 130283 迁安市 130300 秦皇岛市 130301 市辖区 130302 海港区

身份证号码校验实例

身份证号码校验实例 身份证号码是按照一定规律编制的,是个人身份的有效证明,每个人只有一个号码,且不会重复,因而被各单位各部门广泛应用在相关名册中。在大量的身份证号码录入过程中,由于抄写或录入等原因,可能会弄错了某位数字,如果录错了任何一位数字,计算出来的校验码就不一样。根据这一特点,本函数可以对已录入的大批量身份证号码进行校验,如果校验未通过,则说明你录入的号码中必定是某位数字错了,应及时更正,以保证身份证号码正确有效,如果录入的是第一代15位身份证号码,本函数将返回18位号码,使身份证号码保持统一的位数。 代码如下: Function IDcheck(ID) '身份证号码校验函数 Dim s, iAs Integer Dim e, z As String Part1: '----------------------------身份证号码合法性检查--------------------------------------- If Not (Len(ID) = 18 Or Len(ID) = 15) Then '位数检验 IDcheck = "位数错误" Exit Function Else If Len(ID) = 15 Then ID = Left(ID, 6) & "19" & Right(ID, 9)

If IsNumeric(Left(ID, 17)) = False Or InStr(ID, ".") > 0 Then '字符检验 IDcheck = "字符错误" Exit Function End If On Error Resume Next '日期检验 If DateValue(Mid(ID, 7, 4) & "-" & Mid(ID, 11, 2) & "-" & Mid(ID, 13, 2)) < 1 Or _ DateValue(Mid(ID, 7, 4) & "-" & Mid(ID, 11, 2) & "-" & Mid(ID, 13, 2)) > Date Then IDcheck = "日期错误" Exit Function End If End If Part2: '-----------------------------校验码的生成及检查---------------------------------------- s = 0 For i = 1 To 17 s = s + Val(Mid(ID, 18 - i, 1)) * (2 ^ i Mod 11)

一个18位身份证校验计算函数.docx

-个18位身份证校验计算函数 因需要对15位旧身份证号码进行升位和校验、查询处理,又没有搜索到现成的函数,于是自己写了一个简单的过程,希望能够帮得上需要的朋友。 本函数的功能单一,只能校验第18位号码是否正确或者取得第18位号码,其他功能留给人家自C扩展吧! <% ' Version: 1. 0. 1 'Author: sfply(sfply@163. com) 'Last Modified: 2004/7/17 12:03 'Src是身份证号码,可以是15位也可以是18位,15位时只能返回验证码方式使用 'iChk参数取值真假,真代表校验Six是否18位身份证,并且校验第18位是否 正确号码而确定是否有效身份证,返冋只值为true或false ' 假代表返回止确的校验码,返回值为(l~x) dim myldentify myTdentify 二〃36050219781218133?〃 response .write chkldentiyCard(myldentify, false) Function chkldentiyCard(Src,iChk)

dim myWi, myAi, mySrc(17), i, myCount myAi =,z 10X98765432' myWi = split(z/7, 9, 10, 5, & 4, 2, 1, 6, 3, 7, 9, 10, 5, & 4, 2〃,〃,〃) if iChk then if len (Src) = 18 then for i = 0 to 16 mySrc(i)二mid(Src, i + 1, 1) myCouni 二myCount + mySrc(i) * myWi(i) next if mid(myAi, (mycount mod 11)+1,1) = right (Src,1) then chkldcntiyCard = true '返回结果,TRUE为合法身份证验证码 el se chkldentiyCard = false '返回结果,FALSE为非法身份证验证码 end if else chkldentiyCard = false '因为不是18位身份证所以返[H] FALSE end if el se if len(Src)二15 or len(Src)二18 then if len(Src) = 15 then Src = mid(Src, 1, 6) & "19〃 & mid(Src, 7, 9) for i = 0 to 16 mySrc(i)二mid(Src, i + 1, 1) myCount 二myCount + mySrc(i) * myWi (i) n ext chkldentiyCard = mid (myAi, (mycount mod 11)+1, 1)'返回正确的验证码else chkldentiyCard二false '输入不不是15位或18位身份证号 end if end if Encl Function

云南身份证号前六位对照表

530000,云南省530100,昆明市530101,盘龙区530102,五华区530123,安宁市530124,富民县530125,宜良县530127,嵩明县530128,禄劝县530129,滇池530131,寻甸县530111,官渡区530112,西山区530121,呈贡县530122,晋宁县530126,石林县530200,东川市530201,东川市辖区530202,东川区532100,昭通地区532101,昭通市532122,鲁甸县

532124,盐津县532129,彝良县532130,威信县532227,师宗县532228,陆良县532233,会泽县532234,沾益县532323,牟定县532324,南华县532325,姚安县532329,武定县532331,禄丰县532400,玉溪市532401,红塔区532424,通海县532425,华宁县532426,易门县532502,开远市532522,蒙自县532527,泸西县532528,元阳县

532126,永善县532127,绥江县532128,镇雄县532131,水富县532200,曲靖市532201,麒麟区532223,马龙县532224,宣威市532225,富源县532226,罗平县532300,楚雄州532301,楚雄市532322,双柏县532326,大姚县532327,永仁县532328,元谋县532422,江川县532423,澄江县532427,峨山县532428,新平县532429,元江县

532500,红河州532501,个旧市532523,屏边县532524,建水县532525,石屏县532526,弥勒县532529,红河县532530,金平县532531,绿春县532622,砚山县532623,西畴县532624,麻栗坡县532700,思茅地区532721,思茅市532722,普洱县532723,墨江县532724,景谷县532725,景东县532726,镇沅县532901,大理市532922,漾濞县532923,祥云县

18位身份证号编制规则

18位身份证号编制规则 一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。 二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下: 1. 地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T22 60的规定执行。 2. 出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。 3. 顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 4.校验码(R),一位数字,通过前17位数字根据一定计算得出。 三、关于地址码含义的详细解释: 身份证前六位是地区代码,我们用ABCDEF表示。代码的解释规则如下: A:国内区域 1 华北三省二市 2 东北三省 3 华东六省一市

4 华南六省 5 西南四省一市 6 西北五省 7 台湾 8 港澳 B(或者说是AB,就是前2位):省(直辖市,自治区,特别行政区)代码 按照A划定的分区定义省代码,有直辖市的,直辖市列前,其余按离直辖市的距离排序,没有直辖市的,按离北京的远近排序。 具体省(直辖市,自治区,特别行政区)代码如下: 11-15 京津冀晋蒙 21-23 辽吉黑 31-37 沪苏浙皖闽赣鲁 41-46 豫鄂湘粤桂琼 50-54 渝川贵云藏 61-65 陕甘青宁新 81-82 港澳 CD:城市代码 从01开始排,对于直辖市,CD=01表示市辖区,CD=02表示辖县;省的城市代码从省会开始排,比如2101=沈阳2102=大连…… 只有地级城市有独立的城市代码,县级市没有。 EF:市辖区、郊区、郊县、县级市代码

身份证号码前6位表示的地区对照表

身份证号码前6位表示的地区对照表110000 北京市110100 市辖区110101 东城区110102 西城区110103 崇文区110104 宣武区110105 朝阳区110106 丰台区110107 石景山区110108 海淀区110109 门头沟区110111 房山区110112 通州区110113 顺义区110114 昌平区110115 大兴区110116 怀柔区110117 平谷区110200 县 110228 密云县110229 延庆县120000 天津市120100 市辖区120101 和平区120102 河东区120103 河西区120104 南开区120105 河北区120106 红桥区 120107 塘沽区 120108 汉沽区 120109 大港区 120110 东丽区 120111 西青区 120112 津南区 120113 北辰区 120114 武清区 120115 宝坻区 120200 县 120221 宁河县 120223 静海县 120225 蓟县 130000 河北省 130100 石家庄市 130101 市辖区 130102 长安区 130103 桥东区 130104 桥西区 130105 新华区 130107 井陉矿区 130108 裕华区 130121 井陉县 130123 正定县 130124 栾城县 130125 行唐县 130126 灵寿县 130127 高邑县 130128 深泽县 130129 赞皇县 130130 无极县 130131 平山县 130132 元氏县 130133 赵县 130181 辛集市 130182 藁城市 130183 晋州市 130184 新乐市 130185 鹿泉市 130200 唐山市 130201 市辖区 130202 路南区 130203 路北区 130204 古冶区 130205 开平区 130207 丰南区 130208 丰润区 130223 滦县 130224 滦南县 130225 乐亭县 130227 迁西县 130229 玉田县 130230 唐海县 130281 遵化市 130283 迁安市 130300 秦皇岛市 130301 市辖区 130302 海港区 130303 山海关区 130304 北戴河区 130321 青龙满族自治 县 130322 昌黎县 130323 抚宁县 130324 卢龙县 130400 邯郸市 130401 市辖区 130402 邯山区 130403 丛台区 130404 复兴区 130406 峰峰矿区 130421 邯郸县 130423 临漳县 130424 成安县 130425 大名县 130426 涉县 130427 磁县 130428 肥乡县 130429 永年县 130430 邱县 130431 鸡泽县 130432 广平县 130433 馆陶县 130434 魏县 130435 曲周县 130481 武安市 130500 邢台市 130501 市辖区 130502 桥东区

检验身份证号码的正确性

检验身份证号码的正确性 =IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:1 7")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),IF(LEN(A2)=15,ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00")))) EXCEL中如何提取身份证出生日期、性别、检验身份证号码的正确性 中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为:15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码。 18位:6位数字常住户口所在县市的行政区划代码,8位数字出生日期代码,3位数字顺序码和1位检验码。 其中3位数字顺序码,是为同一地址码的同年同月同日出生人员编制的顺序号,偶数的为女性,奇数的为男性。 1、提取籍贯地区的行政区划代码(A2为身份证号,下同) 15与18位通用:=LEFT(A2,6) 如果有一个编码和省份地区的对照表,可以用VLOOKUP函数来提取地区信息。 2、提取出生日期信息 15位:=--TEXT(19&MID(A2,7,6),"#-00-00") 18位:=--TEXT(MID(A2,7,8),"#-00-00") 15与18位通用: =--TEXT(IF(LEN(A2)=15,19,"")&MID(A2,7,6+IF(LEN(A2)=18,2,0)),"#-00-00") 简化公式: =--TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00") (请将输入公式的单元格格式设置为日期格式) 3、提取性别信息 15位:=IF(MOD(RIGHT(A2),2)=1,"男","女") 18位:=IF(MOD(MID(A2),17,1)=1,"男","女") 15与18位通用:=IF(MOD(MID(A2,IF(LEN(A2)=15,15,17),1),2)=1,"男","女") 简化公式:=IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女") 4、检验身份证号码的正确性 18位身份证号码的最后一位是检验码,它是根据身份证前17位数字依照规则计算出来的,其值0~9或X。一般情况只要有一位数字输入错误,依照规则计算后就会与第18位数不符。当然不排除按错误号码计算后恰好与检验码相符的情况,但这种情况出现的可能性较低。因此,对18位号码的验证采用如下公式: =MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-R OW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2,1) 对于15位身份证,由于没有检验码,我们只能简单地去判断出生日期代码是否是一个有效的日期,避免输入一些像“731302”或“980230“等这样不存在的日期。

用VB实现18位身份证输入错误的批量验证

用VB实现18位身份证输入错误的批量验证 在学校里,建学生档案、中考、高考报名时通常都要班主任收集和输入学生的身份证号码,因为身份证数字位数多,既容易输错,逐一验证更是费工夫,如果能够用程序进行批量验证,把输错的号码找出来,只针对错误的号码进行验证就轻松得多了。本算法只能发现输入错误的18位身份证号码,不涉及身份证信息的解读和真伪验证。 VB程序的界面很简单,最少只要一个TEXTBOX和一个命令按钮(下图)。 TEXTBOX只要把MultiLine(多行)属性设为True和ScrollBar(滚动条)属性设为2-Vertical(垂直)即可。这样TEXTBOX就可以容纳多个身份证号码,每个一行。在EXCEL 表格里输好然后统一复制过来即可。 18位身份证的验证算法是这样的: ①.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ②.将这17位数字和系数相乘的结果相加。 ③.用加出来和除以11,看余数是多少? ④.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。 而程序的实现过程就是先把TEXTBOX内的身份证号码按行拆成字符数组,然后逐个对每个身份证号码的前17位进行计算,得出其校验码再与第18位号码进行对照,如果相同就是对的,如果不同则说明有输入错误。然后在每个错误的身份证号码后加上相关信息,使用者可以根据错误信息,只针对有错误的身份证号码来核对证件上的身份证号码。 按钮的代码如下: Private Sub Command1_Click() REM 准备工作,前17位系数和对应检验码放入数组 wi$ = "7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2" yzm$ = "1 0 X 9 8 7 6 5 4 3 2" Dim s1() As String Dim s2() As String s1 = Split(wi$, " ") s2 = Split(yzm$, " ") REM 获取身份证号并验证 Dim s() As String temp$ = Text1.Text

身份证号码前6位的对应区域关系

身份证号码前6位的对应区域110000 北京市110100 市辖区110101 东城区110102 西城区110103 崇文区110104 宣武区110105 朝阳区110106 丰台区110107 石景山区110108 海淀区110109 门头沟区110111 房山区110112 通州区110113 顺义区

110114 昌平区110115 大兴区110116 怀柔区110117 平谷区110200 县110228 密云县110229 延庆县120000 天津市120100 市辖区120101 和平区120102 河东区120103 河西区120104 南开区120105 河北区120106 红桥区

120107 塘沽区120108 汉沽区120109 大港区120110 东丽区120111 西青区120112 津南区120113 北辰区120114 武清区120115 宝坻区120200 县120221 宁河县120223 静海县120225 蓟县130000 河北省130100 石家庄市

130101 市辖区130102 长安区130103 桥东区130104 桥西区130105 新华区130107 井陉矿区130108 裕华区130121 井陉县130123 正定县130124 栾城县130125 行唐县130126 灵寿县130127 高邑县130128 深泽县130129 赞皇县

130130 无极县130131 平山县130132 元氏县130133 赵县130181 辛集市130182 藁城市130183 晋州市130184 新乐市130185 鹿泉市130200 唐山市130201 市辖区130202 路南区130203 路北区130204 古冶区130205 开平区

SQLServer中获取18位身份证号码校验码的函数

在SQL Server中编写获取18位身份证的校验码函数 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[fn_getChkVal](@IDCardNo nvarchar(18)) RETURNS nvarchar(1) AS BEGIN Declare @iSum integer,@iMod integer if len(@IDCardNo)<>18 return '' if LEFT(@IDCardNo,17) like '%[^0-9]%' RETURN '' --判断1-17位是否为数字0-9,如果不是退出 set @iSum= cast(substring(@IDCardNo,1,1) as int)*7 set @iSum=@iSum+cast(substring(@IDCardNo,2,1) as int)*9 set @iSum=@iSum+cast(substring(@IDCardNo,3,1) as int)*10 set @iSum=@iSum+cast(substring(@IDCardNo,4,1) as int)*5 set @iSum=@iSum+cast(substring(@IDCardNo,5,1) as int)*8 set @iSum=@iSum+cast(substring(@IDCardNo,6,1) as int)*4 set @iSum=@iSum+cast(substring(@IDCardNo,7,1) as int)*2 set @iSum=@iSum+cast(substring(@IDCardNo,8,1) as int)*1 set @iSum=@iSum+cast(substring(@IDCardNo,9,1) as int)*6 set @iSum=@iSum+cast(substring(@IDCardNo,10,1) as int)*3 set @iSum=@iSum+cast(substring(@IDCardNo,11,1) as int)*7 set @iSum=@iSum+cast(substring(@IDCardNo,12,1) as int)*9 set @iSum=@iSum+cast(substring(@IDCardNo,13,1) as int)*10 set @iSum=@iSum+cast(substring(@IDCardNo,14,1) as int)*5 set @iSum=@iSum+cast(substring(@IDCardNo,15,1) as int)*8 set @iSum=@iSum+cast(substring(@IDCardNo,16,1) as int)*4 set @iSum=@iSum+cast(substring(@IDCardNo,17,1) as int)*2 set @iMod=@iSum % 11 return substring('10X98765432',@imod+1,1) END

身份证号码辨别所在省份

北京110 河北省130 山西省140 内蒙古自治区150 辽宁210 吉林220 黑龙江230 上海市310 江苏320 浙江330 安徽340 福建350 江西360 山东370 河南410 湖北420 湖南430 广东440 广西450 海南46 重庆市500 四川510 贵州520 云南530 西藏540 陕西610 甘肃620 青海630 宁夏640 新疆650 身份证号码辨别所在省份-转自163微博 身份证号码辨别所在省份 一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。 二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下: 1. 地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 2. 出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。 3. 顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。4.校验码(R),一位数字,通过前17位数字根据一定计算得出。 三、关于地址码含义的详细解释: 身份证前六位是地区代码,我们用ABCDEF表示。代码的解释规则如下: A:国内区域 1 华北三省二市 2 东北三省 3 华东六省一市 4 华南六省 5 西南四省一市 6 西北五省 7 台湾 8 港澳 B(或者说是AB,就是前2位):省(直辖市,自治区,特别行政区)代码按照A划定的分区定义省代码,有直辖市的,直辖市列前,其余按离直辖市的距离排序,没有直辖市的,按离北京的远近排序。 具体省(直辖市,自治区,特别行政区)代码如下: 11-15 京津冀晋蒙 21-23 辽吉黑

一个18位身份证校验计算函数

一个18位身份证校验计算函数 因需要对15位旧身份证号码进行升位和校验、查询处理,又没有搜索到现成的函数,于是自己写了一个简单的过程,希望能够帮得上需要的朋友。 本函数的功能单一,只能校验第18位号码是否正确或者取得第18位号码,其他功能留给大家自己扩展吧! <% ' Version: 1.0.1 ' Author: sfply(sfply@https://www.360docs.net/doc/13340990.html,) ' Last Modified: 2004/7/17 12:03 ' Src是身份证号码,可以是15位也可以是18位,15位时只能返回验证码方式使用 ' iChk参数取值真假,真代表校验Src是否18位身份证,并且校验第18位是否正确号码而确定是否有效身份证,返回只值为true或false ' 假代表返回正确的校验码,返回值为(1~x) dim myIdentify myIdentify = "36050219781218133?" response.write chkIdentiyCard(myIdentify,false) Function chkIdentiyCard(Src,iChk) dim myWi,myAi,mySrc(17),i,myCount

myAi = "10X98765432" myWi = split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2",",") if iChk then if len(Src) = 18 then for i = 0 to 16 mySrc(i) = mid(Src,i+1,1) myCount = myCount + mySrc(i) * myWi(i) next if mid(myAi,(mycount mod 11)+1,1) = right(Src,1) then chkIdentiyCard = true '返回结果,TRUE为合法身份证验证码 else chkIdentiyCard = false '返回结果,FALSE为非法身份证验证码 end if else chkIdentiyCard = false '因为不是18位身份证所以返回FALSE end if else if len(Src) = 15 or len(Src) = 18 then if len(Src) = 15 then Src = mid(Src,1,6) & "19" & mid(Src,7,9) for i = 0 to 16 mySrc(i) = mid(Src,i+1,1) myCount = myCount + mySrc(i) * myWi(i) next chkIdentiyCard = mid (myAi,(mycount mod 11)+1,1) '返回正确的验证码 else chkIdentiyCard = false '输入不不是15位或18位身份证号 end if end if End Function

相关文档
最新文档