|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
最近身份证号码验证、根据身份证号码取出生日期和性别的帖子挺多的,但是验证条件较少,自己写了一个公式,验证包括:
1、15或18位;
2、年份<=当前;
3、月份<=12;
4、当月天数<=31,【改进】增加对2月份天数<=28验证;
5、18位的最后一位满足校验码校验规则。【改进】对最后一位用数值格式校验时,如果字母为“X”会出现#VALUE的错误。
现将测试文件和公式分享给大家,请各位精英指正,欢迎化简公式,具体如下【数组公式】:
=IF(LEN(A1)=15,IF(MID(A1,9,2)*1<=12*OR(MID(A1,9,2)*1<>2*(MID(A1,11,2)*1<=31),MID(A1,9,2)*1=2*(MID(A1,11,2)*1<=28)),TEXT("19"&MID(A1,7,6)*1,"#-00-00"),"身份证号码错误×"),IF(LEN(A1)=18,IF(MID(A1,7,4)*1<=YEAR(NOW())*(MID(A1,11,2)*1<=12)*OR(MID(A1,11,2)*1<>2*(MID(A1,13,2)*1<=31),MID(A1,11,2)*1=2*(MID(A1,13,2)*1<=28))*((IF(MID(A1,18,1)="X","X",MID(A1,18,1)*1))=LOOKUP(MOD(SUM(MID(A1,ROW($1:$17),1)*{7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}),11),{0,1,2,3,4,5,6,7,8,9,10},{1,0,"X",9,8,7,6,5,4,3,2})),TEXT(MID(A1,7,8)*1,"#-00-00"),"身份证号码错误×"),"身份证号码为空或位数错误×"))
[ 本帖最后由 handylg 于 2011-1-26 11:11 编辑 ] |
|