Excel中使用Countif公式查重身份证号时遇到的问题?

按照百度上面提供的方法在后面连接了&"*"符号,但是有些身份证号因疏忽少录入了一位就导致执行Countif公式的时候出现了误差,请问各位这种情况应该如何解决呢。

身份证号码是唯一的不会重复,所以查出重复就说明输入错误,

逻辑层面,分两步处理,

第一步:核对是不是有18位数据(包括字母),如果没有18位,则说明输出错误,需要核对。

第二步:对有18位的数据用countif函数直接进行统计,不用通配符*,因为证件号码的前17位相同的情况是普通存在的,所以用通配符是错误的做法。

具体公式为:=IF(LEN(A3)=18,SUM(1*ISNUMBER(FIND(A3,$A$2:A3))),"没有18位数据"),

数组公式,输入结束后需要时按下ctrl shift enter 三个键,

效果如图:

如有疑问可继续交流,问题如得到解决请给个认可!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-06-17



人事档案管理中,身份证号是一个不可缺少的字段,如果人数众多,管理人员也不可能全部记住相关人员,所以,人员查重也是人事管理的一项重要工作。

一、一般查重(错误查重)。

方法:

在目标单元格中输入公式:=IF(COUNTIF(C$3:C$9,C3)>1,"重复","")。

解读:

1、结果分析。

请看下图:

从查询结果中我们可以看出,“王东”和“小北”的身份证号重复,“小王”和“小李”的身份证好并未重复……这是为什么了?

2、原因解答。

1、在Excel中,超过15位的只能保留15位有效数字,其余的全部视为0处理。

2、所以我们就不难理解上述的判断结果了。因为身份证的前15位全部相同。而在数据处理时,后3位又被当做0对待,故重复。

二、正确查询。

方法:

在目标单元格中输入公式:=IF(COUNTIF(C$3:C$9,C3&"*")>1,"重复","")。

解读:

1、一半查询和正确查询的公式没有很大的变动,只是在正确查询公式的查询值参数中添加了星号(*)。但就是这个星号的作用得到了正确的查询结果。

2、其实在Excel中星号我们一般被称为通配符,加上通配符的作用就是将当前的数字内容转换为文本,然后进行对比。从而得到正确的结果!

三、防止重复。

为保证数据的有效性,我们可以提前做一些工作,例如检测值是否重复。如果重复,要求重新输入。

方法:

1、选中数据源。【数据】-【数据验证】。

2、选择【允许】中的【自定义】,并在【公式】中输入:=COUNTIF(C$3:C$9,C3&"*")=1。

3、单击【输入信息】和【出错警告】标签,分别输入信息,并【确定】。

4、检测数据,当有重复数据时,Excel进行提示并要求重新输入。

第2个回答  2021-10-08
那就换一个方法呗,比如:
=SUMPRODUCT(EXACT($A$2:$A$3,A2)*1)
向下填充一下试试。
不过既然是身份证号码,那首先得检查号码的正确性啊,比如长度,比如是否符合验证,然后在使用countif查重应该不会出现你的这种问题。
第3个回答  2021-10-08
这是由COUNTIF函数只能识别16位长度的局限性所决定的,在后面加上&"*"通配符,通俗讲是延长了此函数16位识别的局限,如果长度相等就不会出现这种问题,而如果录入长度不是标准的18位,在长度小的这个上就造成误判(而这种误判一定程度上也不是坏事,至少让你知道少录入一位)。

如果不想让少录入一位这个不显示2,可以换个不使用通配符的公式=SUMPRODUCT(N(A2:A3=A2))
第4个回答  2021-10-09
增加身份证号码文本长度验证
选择A2:A100,数据,数据验证,数据验证,允许,选择,文本长度,选择,等于,输入18。