Day 11094 关于Excel中录入15位以上数字时(例如身份证号),COUNTIF函数返回的结果数量不正确的问题

最近帮同事做一个表格,要求在录入数据时,自动查找同一列下是否有相同的值,有则进行提示,而需要这个提示功能的其中一列是『身份证号』。

众所周知,中国大陆地区的身份证号是18位。鉴于Excel采用了IEEE 754的浮点数存储规范,对于正整数最高支持到15位。这也是在Excel中录入身份证号时,如果身份证号中不含X,经常会在按下回车的时候变成一串科学记数法的原因,而实际上此时第16位起的数字已经丢失了。

对于只使用表格本身的场合,可以简单地将对应单元格的数字格式修改为『文本』,虽然这样一来相关数字就不能参与运算,但多半也没有需要对身份证号进行运算的情形。

然而,当涉及到使用COUNTIF函数时,即使对应单元格的数字格式是文本,COUNTIF对于传入的数据也会进行自动的类型判断。试观察如下VBA语句:

‘sShenfenzheng是之前传入的单元格内容(身份证号),变量类型为String
n = Application.WorksheetFunction.CountIf(Range(“B1:B65535”), sShenfenzheng)

此时如果在B列中录入如下数据:

110000199901012333
110000199901012334
110000199901012335

然后对sShenfenzheng传入『110000199901012336』的话,n的值将会是3,而不是预期的0。

解决方法:

在调用CountIf时,将传入的查找目标后面跟上一个『*』,强制CountIf按照字符串形式对数据进行查找,即可获得正确的结果。

以前述代码为例,应修改为:

n = Application.WorksheetFunction.CountIf(Range(“B1:B65535”), sShenfenzheng & “*”)

Day 11039 关于在VMWare Workstation中安装Windows Thin PC时,网卡和SCSI驱动无法安装的问题

情况说明:

1、在VMWare Workstation 12中选择系统类型为Windows 7、安装Windows Thin PC并安装VMWare Tools后,发现网络无法正常使用。
2、到设备管理器中查看时,可发现有感叹号设备Ethernet Controller和SCSI Controller。

解决方法:

可能有更简单的解决方式,不过可以选择手动下载对应驱动进行安装:网卡驱动SCSI控制器驱动

Day 10896 《小鱼三旋》

加班后的夜晚,蓦地想起这个标题。

不知道周鹏程是否是他的真名,也不知用依冉这个名字能否再在网上检索到他,更因为种种缘故,已经忘记为什么我们最后要一拍两散。

感谢Internet Archive Wayback Machine,将易逝而久远的数字记忆定格,让漫无目标的记忆,在茫茫网海中找到导航的明灯。

十几年的时光,以及这期间发生的各种各样的事,使我对这篇文章有了更深层的理解,而不是孩童时代“为赋新词强说愁”的矫情。

寻梦雪后、飘零季的各位,你们还好吗?

(更多…)

Day 10874 在Windows Vista及以上版本系统中,提升权限后的凭据看不到普通凭据创建的映射网络驱动器

情况说明:

1、以普通用户权限(普通用户或“管理员”账户均可)创建映射的网络驱动器;

2、在一个提升权限后的凭据(例如:以管理员模式启动的第三方文件管理器)中进行浏览文件夹操作;

3、Voila:找不到这个映射的网络驱动器,即使直接录入映射的驱动器盘符也无法访问。

原因分析:

提升权限后的凭据与登录时使用的账户实际上是两个账户(尽管它们俩共享账号和密码),由于安全权限设计,这两个账户创建的映射网络驱动器是不互通的。(微软官方的详细说明

解决方法:

修改注册表 HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System 建立或修改DWORD(32位)项目EnableLinkedConnections,值为1,然后重启计算机即可。