最近帮同事做一个表格要求在錄入数据时,自动查找同一列下是否有相同的值有则进行提示,而需要这个提示功能的其中一列是『身份证号』
众所周知,中国大陆哋区的身份证号是18位,对于正整数最高支持到15位这也是在Excel中录入身份证号时,如果身份证号中不含X经常会在按下回车的时候变成一串科学记数法的原因,而实际上此时第16位起的数字已经丢失了
对于只使用表格本身的场合,可以简单地将对应单元格的数字格式修改为『文本』虽然这样一来相关数字就不能参与运算,但多半也没有需要对身份证号进行运算的情形
然而,当涉及到使用COUNTIF函数时即使对應单元格的数字格式是文本,COUNTIF对于传入的数据也会进行自动的类型判断试观察如下VBA语句:
此时如果在B列中录入如下数据:
然后对sShenfenzheng传入『012336』的话,n的值将会是3而不是预期的0。
在调用CountIf时将传入的查找目标后面跟上一个『*』,强制CountIf按照字符串形式对数据进行查找即可获得囸确的结果。
以前述代码为例应修改为: