该文节选自《函数宝典》OFFICE365EXCEL 4.3.18版本电子版COUNTIF函数
我们在很多工作中需要对长数字进行对比,比较常见的是通过人员和身份证号进行比对,这是小型公司在资金发放过程中,进行对账号的比对,避免同名发放出错。
如果我们直接拿长数字去进行比对,当我们仔细检查时就会发现,会发现反馈的结果可能会出错,一般我们在判断这类是否有重复数据时,选用的函数为COUNTIF函数,虽然身份证号码列我们已经设置为文本型数值,但是COUNTIF函数在处理时,会将文本型数值识别为数值进行统计。
在Excel中超过15位的数值只能保留15位有效数字,后3位全部视为0处理,因此COUNTIF函数会将这些单元格中的身份证号码都识别为相同。
举例说明如下实(实例选自函数宝典COUNTIF函数第12例):

F230=COUNTIF($C$230:$C$239,C230)
实例中红色字体加粗部分是前15位相同,后3位不同,但在COUNTIF函数判断时,示为相同,结果出错。
用什么办法来解决这种误判的问题呢?
解决方案1:
可将E2单元格公式修改为:
F230=COUNTIF($C$230:$C$239,C230&"*")

Excel不认识数字的15位后数字,如何强制让函数把数字被当成文本格式,Excel就能识别15位后的数字。那么怎么让Excel确认是字符串类型呢?
*(星号)在excel公式里是通配符,“A*”表示以A开头后面跟任意长度的字符串。只有文本格式才适用于通配符。所以如果我们让身份证号连接*号,就可以明确的传达给COUNTIF函数信息,你要统计的是文本格式,不是数值。
根据以上分析,我们可以把公式设置为
=COUNTIF($C$230:$C$239,C230&"*")
这里我们可以举例加以说明原理:

F244=C244&"身份证"
用身份证号码+身份证,得一组标准文本,再用下面公式计算,
J244=COUNTIF($F$244:$F$253,F244)
这时我们可以看到结果是正确的,加辅助列比较麻烦,会给表格增加数据,也不美观。所以我们用=COUNTIF($C$230:$C$239,C230&"*")方式直接嵌套在公式中。
解决方案2:
为查看方便,也可以把公式结果写成“重复”与不显示。
如图

这时有两种公式供你选择
公式1=IF(COUNTIF($C$230:$C$239,C230&"*")>1,"重复","")公式2=IF(SUM(N(C244=$C$244:$C$253))>1,"重复","")

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。