在审计过程中,笔者发现身份证号在各类补贴发放过程扮演了越来越重要的角色。大部分的涉农补贴有着金额小但涉及人员多的特点,手工查证难度大、效果差、风险高。利用不同软件辅助审计,成为大部分审计人员的首选。笔者选择了三款在近几年的审计工作中常用的软件对身份证号的审计方法,和大家一起探讨一下。 对身份证号的审计不外乎以下几种:一是身份证号合规性审计,即审计身份证号位数是否为15位或18位。通过身份证号合规性审计,可以查证是否有人为编造身份证号行为。二是用身份证号构造年龄字段与身份证所有者实际年龄进行核对。可以查证身份证所有人享受各类补贴时是否符合相关年龄规定。三是用身份证尾数识别性别审计,即身份证位数为15位的最后一位数是奇数的为男性,是偶数的为女性,身份证为18位的第17位是奇数的为男性,是偶数的为女性。同样是为了进一步查证是否存在有编造身份证号行为。 一、使用EXCEL电子表格审计 (一)身份证号位数合规性的审计方法 首先对电子表格中的数据进行排序或分类(主要目的是让身份证位数为15位的或18位放在一起),然后在所要分析的位数为15位的身份证后一列中插入公式:=IF(Logical,Value if true,Val-ue_if_false),如:=IF(LEN(L2)=15,“符合要求”,“不符合要求”);在位数为18位的身份证号后插入公式:=IF(LEN(L2)=18,“符合要求”,“不符合要求”),在插入公式时,特别注意的是单元格格式。然后将显示不符合要求的全部列出分析。 (二)利用身份证号构造年龄字段与实际年龄核对的审计方法 同样在分析前,将身份证号分成15位和18位两类。 1.身份证号为15位 在所要分析的15位身份证号后一列插入公式: =109-MID(身份证所在列坐标,起始位数,所要取出的位数),如=109-MID(L2,7,2),意为用109减去从L列第2行的身份证号码中从第7位开始,取出2位数(身份证所有者出生年份)。如身份证号码为320***550126580的公民,从第7位开始取出2位为55,用109(审计时为2009年)减55为54,即当时该身份证所有者年龄为54岁。 2.身份证号为18位 在所要分析的18位身份证号后一列插入公式: =109-MID(身份证所在列坐标,起始位数,所要取出的位数),如=109-MID(k2,9,2),意为用109减去从k列第2行的身份证号码中从第9位开始,取出2位数(身份证所有者出生年份)。如身份证号码为320***194702285830的公民,从第9位开始取出2位为47,用109(审计时为2009年)减47为62,即当时该身份证所有者年龄为62岁。 (三)利用身份证号识别性别审计方法 1.身份证号为15位 在所要分析的身份证号后一列插入公式: =IF(MOD(MID(列坐标,15,1),2)=0,“女”,“男”),意为如果15位身份证号的最后一位被2整除的话,该身份证所有者为女性,反之为男性。如在身份证号为320***430227581(列坐标为k列3行)后一列插入公式=IF(MOD(MID(K3,15,1),2)=0,“女”,“男”),则L3单元格显示为男。 2.身份证号为18位 在所要分析的身份证号后插入公式: =IF(MOD(MID(列坐标,17,1),2)=0,“女”,“男”),意为如果18位身份证号的最后第二位被2整除的话,该身份证所有者为女性,反之为男性。如在身份证号为320*****3210065829(列坐标为k列11行)后一列插入公式=IF(MOD(MID(K11,17,1),2)=0,“女”,“男”),则L11单元格显示为“男”。 二、使用SQLSERVER2000进行审计 (一)身份证号位数合规性审计方法 在查询分析器中输入语句: select* from[表名] where len(身份证号码)<>15 and len(身份证号码)<>18 查询出的结果为身份证号码位数既不是15位也不是18位的记录。 (二)利用身份证号构造年龄字段与实际年龄核对审计方法 在查询分析器中输入语句: select*,case when len(身份证号码)=15 then 109-substring(身份证号码.7,2) when len(身份证号码)=18 then 109-substring(身份证号码,9,2) end实际年龄 from[表名] oder by实际年龄desc 查询结果为身份证所有者的实际年龄,并按降序排列。语句中的“109”为构造数字,如果是2010审计则用“110”,以此顺延。 (三)利用身份证号识别性别审计方法 在查询分析器中输入语句: select*,性别1,case when len(身份证号码)=15 and substring(身份证号码,15,1)in(1,3,5,7,9)then'男' when len(身份证号码)=18 and sub string(身份证号码,17,1)in(1,3,5,7,9)then'男'else'女'