永中Office教程:身份证信息查询

发布: 2009-2-23 12:05  作者: webmaster  查看: 575次 共有0条评论

:身份证信息查询

实例见附件

函数解释

B2单元格函数式:

=IF(ISERROR(CONCATENATE(VLOOKUP(LEFT(A2,2),$H$2:$I$6467,2,FALSE),VLOOKUP(LEFT(A2,6),$H$2:$I$6467,2,FALSE))),"",CONCATENATE(VLOOKUP(LEFT(A2,2),$H$2:$I$6467,2,FALSE),VLOOKUP(LEFT(A2,6),$H$2:$I$6467,2,FALSE)))


看起来比较复杂,像天书,但实际上是由两个完全相同的函数式组成的,第一部分用于判断单元格取值结果是否正确,如果错误,返回空值;如果正确,反回正确结果。

我们把函数拆开来分析:

LEFT(A2,2)将A2单元格的值从左边起,取2个字符,返回的结果是36。其余类推。


VLOOKUP(LEFT(A2,2),$H$2:$I$6467,2,FALSE)即是根据LEFT(A2,2)的值36,在H2至I6467的范围内的H列查找,找到

了以后返回指定范围内的第2列(即I列)对应的单元格的内容。(这里用加了$符号的绝对引用,是为了函数式下拉时,引用范围不会跟着改变。)H2:I6467是预先录好的地址及对应的代码。


CONCATENATE()函数就是把几个查找到的文本连接起来,即成了“某省某市某区”,作用跟连接符&相同。


ISERROR()函数是判断函数是否返回错误值。


IF()函数用于判断ISERROR()返回的值是不为真,真返回空值,假返回“某省某市某区”。

C2单元格函数式:

=IF(LEN(A2)=18,CONCATENATE(MID(A2,7,4),"年",MID(A2,11,2),"月",MID(A2,13,2),"日"),IF(LEN(A2)=15,CONCATENATE("19",MID(A2,7,2),"年",MID(A2,9,2),"月",MID(A2,11,2),"日"),""))


LEN(A2)返回A2单元格的字符个数。


MID(A2,7,4)从A2单元格文本中的第7位开始,取出4个字符。其余类推。


CONCATENATE()文本连接函数,同上。


这里用了两个IF()函数套叠,判断A2的文本是18个字符或15个字符,根据不同的返回值提取不同的字符。

D2单元格函数式:

=IF(C2="","",YEAR(TODAY())-YEAR(C2))


YEAR()取日期年份。


TODAY()取系统当前日期。

E2单元格函数式:

=IF(C2="","",TODAY()-C2)(同上),返回的值用日期序列数显示,即天数。

F2单元格函数式: 

=IF(A2="","",IF(AND(LEN(A2)<>18,LEN(A2)<>15),"身份证位数错",IF(LEN(A2)=18,IF(MOD(MID(A2,17,1),2)=0,"女","男"),IF(MOD(RIGHT(A2,1),2)=0,"女","男"))))


根据身份证信息判断男女,18位身份证用倒数第2位判断,15位身份证用最后一位判断,奇数为男,偶数为女。


MOD(数字,2)把取得的数字被2除,取余数,余数是0是偶数,余数是1是奇数。 

以下经网友改进,并精简了函数式(改进后的放在附件电子表格Sheet2中):

C2=IF(A2<>"",TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00")+0,"")
D2=IF(C2<>"",DATEDIF(C2,TODAY(),"y"),"")
F2=IF(A2<>"",IF(AND(LEN(A2)<>18,LEN(A2)<>15),"身份证位数错",IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女")),"")

 

 

相关阅读
大家对 永中Office教程:身份证信息查询 的评论
最新PPT教程
最新评论
PPT问答