分类:草草笔记

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 10874 在Windows Vista及以上版本系统中,提升权限后的凭据看不到普通凭据创建的映射网络驱动器

情况说明:

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

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

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

原因分析:

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

解决方法:

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

Day 10840 Apache、PHP NTS、FastCGI与Rewrite之间不得不说的故事(雾

为单位装新网站,出于安全考虑,环境需要由我自行配置,于是按照开发公司的要求去下载了Apache 2.4、PHP 5.6和MySQL,由于服务器系统为64位Windows,所以理所当然地都下载了64位的组件,其中PHP使用了比较顺手的TS(线程安全,Thread-safe)版本。

一切配置好后,发现说明书中组件要求有一个Zend Guard Loader,于是跑去下载,但当看到支持PHP 5.6的Zend Guard Loader的版本只有x86版本时心里就咯噔一下,尝试配置后,果不其然,64位的PHP无法与32位的Zend组件协作,不得已推倒重来,谁知这只是更大坑的开始。 (更多…)