|
用永中Office2009电子表格制作了身份证信息查询表,供永中网友使用及参考。本例全部使用函数。例中参考了网友EXCEL文档,本人对函数进行了精简,并对使用的函数进行了解释。由于水平有限,错误难免,错漏之处敬请网友斧正。
函数解释
1、B2单元格函数式:
=IF(ISERROR(CONCATENATE(VLOOKUP(LEFT(A2,2),$H$2I$6467,2,FALSE),VLOOKUP(LEFT(A2,6),$H$2I$6467,2,FALSE))),"",CONCATENATE(VLOOKUP(LEFT(A2,2),$H$2I$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()返回的值是否为真,“真”返回空值,“假”返回“某省某市某区”。
2、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个字符(例中返回1985)。其余类推。
CONCATENATE()文本连接函数,同上。
这里用了两个IF()函数嵌套,判断A2的文本是18个字符或15个字符,根据不同的返回值,从不同位置提取字符。
3、D2单元格函数式:
=IF(C2="","",YEAR(TODAY())-YEAR(C2))
* YEAR()取日期年份。
* TODAY()取系统当前日期。
4、E2单元格函数式:
=IF(C2="","",TODAY()-C2)(同上),返回的值用日期序列数显示,即天数。
5、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是奇数。
更详细的内容请登陆:
http://forum.evermoresw.com/thread-13935-1-1.html |
|