今天为大家介绍的是excel数据整理时一类最常见的坑——不可见字符。从unichar函数对应的uincode字符集结果来说,excel大约有111万+个字符,其中有不少字符的性质千奇百怪,由于unichar/unicode函数出现得晚(2013版本新增函数),因此现在还在用2010或以前版本的小伙伴们,如果经常需要网页或软件导出的数据,就可能会被一些看不到的字符影响统计和计算。接下来就和大家一起说说excel里各种常见的不可见的字符与对应解决方法。
1、文本识别符和空文本
字符串最前面的一个半角单引号。
严格来说,这个字符不属于字符串内的字符,而是excel的特殊格式设定。在字符串前加上这个半角单引号会使整个字符串强制设置为文本格式,无视之前单元格格式的设定。
这个半角单引号的特点是只在编辑栏中显示,单元格内不显示。这个字符的存在不影响字符串匹配(除了数据类型差异)但是总有强迫症患者问怎么清除这个字符,已经解释了这字符属于特殊格式设定。
因此不能使用字符的处理方式,需要使用格式的方式:
找个空单元格把格式用格式刷刷过来,或者使用开始菜单下右侧编辑部分的清除格式功能清除这个字符。(注意,设置完成后,要双击单元格,单元格才能变成常规模式。)
另外一类不属于不可见字符但经常混为一谈的东西为空文本,即假空。
假空是和真空(单元格)相对的,共同点是使用len函数对这个单元格计算字符数时结果都是0(0字符)。
假空多由于公式结果或者软件导出造成。len函数的字符计算结果是0,并且也无法通过定位到空值的操作,定位到相应单元格。
假空在公式里以""表示,因此本质还是文本,虽然无法用len函数检测出来,但是可以用istext或者isblank等函数检查出来与真空的差异。
注意countblank函数不区分真空与假空。
当然,也可以使用分列,进入分列页面后直接点完成,把假空处理为真空。
或者使用查找功能,在查找框中什么都不输,对查找到的单元格使用Ctrl+A全选来定位真空+假空单元格,用于后续处理(选中后右键清除内容即可把全部假空单元格处理为真空)。
上面这两种不属于字符但经常被混为一谈(因为这2种不能被len函数检查出来)所以先介绍下。
然后我们就来聊聊excel里各种影响常规匹配与核对/计算的各种不可见字符了。
2、空格
这应该是最容易发现的不可见字符吧。
肉眼只能看到两个字符但len结果为3,所以存在不可见字符。
空格是占字符宽度的,因此可以在编辑栏内直接选中抹黑查看。
code函数对空格返回的字符编码结果为32,可以用这个函数快速定性,清除方式可以直接替换为空(什么都不输)。函数处理如果为两侧空格可以用trim函数快速清除(这函数不能清除中间作为间隔符的空格,中间的要用substititute+char(32)清除。(记住trim函数只能清除两个字符:空格与其全角形式(char(32)与char(41377)))。
3、非打印字符
这几个字符里大家比较熟悉的是char(10)换行符。属于常见的非打印字符,但对新手来说这些字符比空格相对隐蔽。因为像char(9)这类字符在单元格内是不占宽度的,所以无法直接使用抹黑方式检查。
江湖上有一招叫照妖镜就是针对这类性质,即把字符串复制粘贴在记事本或者word将字符现行,再复制粘贴进行替换清除。
粘在记事本里能发现存在多余字符。