Day 4768 关于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 4763 关于Windows Update更新Windows Defender定义时,返回8050800C错误的解决方法

情况说明:

在Windows 7 x64下,使用Windows Update进行系统更新时,无法安装Windows Defender恶意软件定义的相关更新,始终返回8050800C错误。此时,直接打开Windows Defender对定义进行更新时,也会报错无法更新。

解决方法: 继续阅读 “Day 4763 关于Windows Update更新Windows Defender定义时,返回8050800C错误的解决方法”

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

情况说明:

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

解决方法:

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

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

情况说明:

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

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

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

原因分析:

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

解决方法:

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

Day 4514 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组件协作,不得已推倒重来,谁知这只是更大坑的开始。 继续阅读 “Day 4514 Apache、PHP NTS、FastCGI与Rewrite之间不得不说的故事(雾”

Day 4407 使用独立安装包安装.Net Framework 4.6.2时,提示『无法建立到信任根颁发机构的证书链』

出现该问题的原因是未能更新本机的受信任证书颁发机构证书列表,导致安装包验证失败,以下几种情况可以造成此问题:

1、安装该运行库的系统未接入互联网;

2、安装该运行库的系统所在的网络环境,屏蔽了对微软受信任根证书更新的URL。

(如果使用的不是独立安装包,而是Web Installer,问题可能为第2条,因为Web Installer未联网无法使用)

解决方法:

1、点击此处(微软官方链接)下载Microsoft Root Certificate Authority 2011证书。

2、开始—运行,输入mmc启动管理控制台。

3、文件—添加管理单元,在『可用的管理单元』中选择『证书』,点击『添加』,在弹出的对话框中选择『计算机账户』,下一步中选择『本地计算机』,一路确定至返回到MMC的主界面。

4、展开控制台根节点—证书(本地计算机)—受信任的根证书颁发机构—证书,点击『操作』菜单—所有任务—导入(如果没有导入,只有『打开』和『导出』,则点击右侧列表末尾的空白处取消选择,然后重新操作一次)

5、在导入向导中,『要导入的文件』选择在第一步中下载的cer证书文件,下一步的『证书存储』选择『将所有的证书放入下列存储』,点击『浏览』并选择『受信任的根证书颁发机构』,并在『下一步』后选择『完成』。

6、重新运行.Net Framework 4.6.2安装程序即可。

Day 4330 关于Secure Settings不能识别已root系统的解决方法

Secure Settings是一款配合其它软件(如Tasker等)实现对Android设备进行超多控制的应用(Play页面)。

最近将手机升级到Android 7.0,经过好大一通折腾,终于将设备root掉,但通过钛备份恢复的Secure Settings总是会报『由于没有root权限,一些特定的操作无法进行』,这里是指我设置的Tasker任务,每天晚上23点之后自动将手机设置为飞行模式。

经过搜索,得知由于Secure Settings检测root的方法是去搜索/system/bin/su是否存在,而应用本身已长年未更新(上次更新为2015年1月),现在以SuperSU进行root的设备采取的是『systemless』的方式,即不会在/system/(x)bin下写入su的binary,导致其误以为系统没有root。

解决方法如下:

1、打开设备的USB调试模式

2、使用adb连接设备执行操作:

adb shell

su

mount -o remount,rw /system

touch /sbin/su /system/bin/su /system/xbin/su

mount -o remount,ro /system

exit

reboot

3、设备重启完成后,Secure Settings的误判问题即可解决,此后如果有SuperSU的授权提示,进行授权即可。

注1:如在mount步骤中报错『Device or resource is busy』等,可将第二个参数修改为『rw,remount』及『ro,remount』。

注2:执行touch时如出现『/sbin/su:Read-only file system』,为正常现象,可以无视之。

参考资料:

  1. https://dammit.nl/20160406-how-to-fix-secure-settings-on-android-devices-with-supersu-systemless-root.html
  2. https://forum.xda-developers.com/pixel-c/help/device-resource-busy-t3449240

Day 4250 Powerpoint 2007+修改页面尺寸而不拉伸元素

在PowerPoint中,对已经做好的幻灯片通过『页面设置』修改页面尺寸(如从全屏4:3修改为全屏16:9),则PowerPoint会自动拉伸页面元素,本意是让原有的元素能自适应新的页面尺寸,但常常适得其反,因为页面尺寸的变化导致本来就需要对元素位置进行重排,现在反而还需要挨个将元素尺寸复位,这对于页数较多的PPT来说简直是灾难性的。

根据本页面的内容,可通过如下方式无损调整PPT文档的页面尺寸(限pptx格式,即PowerPoint 2007以后版本生成的文档):

  1. 备份原始文件。
  2. 将pptx文件用任意支持ZIP格式的压缩软件(如WinRAR、7-zip等)解压缩至单独的文件夹。
  3. 使用文本编辑器(建议为Notepad++等功能比较完善的编辑器,而不是系统自带的记事本,以免出错)打开解压缩后的文件中的 ppt\presentation.xml,查找『p:sldSz』,将其后的cx和cy参数修改为要使用的页面尺寸,常用的全屏尺寸对应数值如下:
    【全屏4:3】cx=”9144000″ cy=”6858000″
    【全屏16:9】cx=”9144000″ cy=”5143500″
    【全屏16:10】cx=”9144000″ cy=”5715000″
  4. 将所有文件重新打包为ZIP格式(注意不要选择其它格式,Powerpoint无法识别)『存储』(存档)压缩率(各压缩软件描述不同,WinRAR为『存储』,7-zip为『仅存储』),然后将后缀重新修改为pptx即可。

按照此方法修改后的pptx文档有一个小问题,即页面的十字中心参考线仍为修改前的位置(通常是水平参考线的位置偏移),猜测可能在XML中有其它参数进行控制,但不影响文档的正常编辑和使用。

以上步骤在 PowerPoint 2010 中测试通过。

Day 4238 使用Photoshop将PDF转换为抗锯齿JPG

  由于工作原因,需要将手头的一批文字已经转换成轮廓的PDF文件转换为JPG图像。Adobe Acrobat支持直接将PDF文件另存为JPG图片,但由于某些不得而知的原因,转换出来的JPG图像惨不忍睹。

  如上图所示:上图为PDF在Acrobat或Reader中直接显示的效果,而下图为Acrobat导出的JPG,可以看到文字轮廓的锯齿十分严重,已经达到无法装作看不见的地步。

  在网上搜索一通,发现这个问题居然是个老大难:有人在2009年在Adobe官网提问,一直到8年后的今天都没有得到可用的答复;有的人说导出为PNG或TIFF格式,并提高导出时的精度,经实验并没有什么帮助;还有人说通过第三方在线服务进行转换,结果因为这个PDF文件太大(>100M),各种服务要么不接受,要么要我开付费账号,遂放弃。

经过实验,通过Photoshop打开PDF,并配合自定义的保存动作,通过批处理可以一定程度上解决这个问题,具体的处理方法如下(实验环境为Adobe Photoshop CS6): 继续阅读 “Day 4238 使用Photoshop将PDF转换为抗锯齿JPG”

Day 4101 关于笔记本键盘NumLock关闭后,主键盘区小键盘共用区仍然只能输入数字的处理方法

这次并不是亲自遇到的问题,而是某群里有人问,找到的方法奏效了,所以记录一下。

情况说明:由于空间有限,多数笔记本上的M、JKL、UIO、789是复用为普通104键盘上的小键盘区的,分别对应小键盘上的0~9按键(其输入的键码与主键盘区有差异),当NumLock打开时,这几个键就会变成小键盘对应的按键。

本次遇到的问题是:在NumLock关闭的情况下,M输入的依然是0、JKL输入的依然是1、2、3,以此类推。(请不要与NumLock打开时JKL输入的是123的正常情况混淆)

原因分析:据下文来源链接中的信息称,该问题的原因是曾在本机使用了外接键盘或屏幕键盘(或其他不可预知的情况),并在这个非内置键盘上修改了NumLock的状态为开启。当移除外接键盘或退出屏幕键盘后,系统中仍然保存着最后的NumLock状态,但内置键盘的状态并没有更新,从而导致NumLock的状态被锁定在开启,并由此导致主键盘区的复用小键盘无法关闭。

解决方法有以下几种(来源链接):

1、关闭内置键盘的NumLock后(否则无效),按一下内置键盘上的Shift+NumLock。

2、Windows下使用“屏幕键盘”应用,多点几次屏幕键盘的NumLock并在退出前保持“关”状态。

3、关闭内置键盘的NumLock后,接入一个外置键盘,并关闭外置键盘的NumLock,最后拔下外置键盘。