Excel:常见的不可见的字符与对应解决方法
1、1,文本识别符和空文本字符串最前面的一个半角单引号。

3、另外一类不属于不可见字符但经常混为一谈的东西为空文本,即假空。假空是和真空(单元格)相对的,共同点是使用len函数对这个单元格计算字符数时结果都是0(0字符)。假空多由于公式结果或者软件导出造成,虽然len函数的字符计算结果也是0,但无法被定位-空值的定位操作定位到相应单元格。假空在公式里以""表示,因此本质还是文本,虽然无法用len函数检测出来,但是可以用istext或者isblank等函数检查出来与真空的差异。

5、上面这2种不属于字符但经常被混为一谈(因为这2种不能被len函数检查出来)所以先介绍下。然后我们该聊聊excel里各种影响常规匹配与核对/计算的各种不可见字符了。

7、肉眼只能看到2个字符但len结果为3,所以存在不可见字符。空格是占字符宽度的,因此可以在编辑栏内直接选中抹黑发现。

9、3,非打印字符这几个字符里大家比较熟悉的是char(10)换行符。属于常见的非打印字符,但对新手来说这些字符比空格相对隐蔽,因为像char(9)这字符在单元格内是不占宽度的,无法直接使用抹黑方式检查。江湖上有一招叫照妖镜就是针对这类性质,即把字符串复制粘贴在记事本或者word将字符现行,再复制粘贴进行替换清除。

11、非打印字符可以使用分列功能清除,函数里通常使用clean函数直接清除这部分字符。

13、还有很多字符是这2个函数清除不了的,最典型的是unichar(160),这个字符在微软的trim函数帮助内有提及,不间断空格字符,常见于网页。在单元格中的性质和空格很相似但无法用trim清除,这个字符的快速清除方式为直接复制后替换为空(什么都不输)清除。这个字符对新手来说最大的误区在于用code函数获取的编码值为63,但不能使用substitute+char(63)清除。而code结果为63的不可见字符,是新手最容易出现的误区,也是这篇文章的重点内容。

15、关于这部分网上也有很多代码,但测试下都没有能100%清除干净的,和代码本身无关,重点是要有全部的不可见字符编码表,但这个会涉及到很多环境因素影响,例如字体等都会影响某些字符的可见性)。

17、1,code结果为63。2,单元格内无宽度。3,在记事本与word里也不会现行。4,trim与clean函数不能清除。5,这些字符虽然占字符数但在用等号判断时不影响结果(图里紫色的公式)。这类字符最大的特性在于第5条,excel里只有3709个字符有此性质(365版本下有老师测试过结果为2000+)。这个判断性质对于新手极其容易造成核对时出现错误。

19、其中清除(Text.Clean)能力和工作表函数clean能力一致。但Text.Trim能清除的字符比工作表函数trim多太多了(注意是两侧的)。

21、5.2,应用商店2016自带的应用商店里有不少实用小工具,如XLTools.net Data Cleaning,专司清除和转换字符的数据类型。测试下能清除unichar(160)等不可见字符,当然还是不是万能的,但是操作不难,适合新手使用,重点是上述最危险的unichar(8204)这种字符也能被直接清除。调用方式为2016的插入-加载项的应用商店里搜索或在分类中找到该工具添加,在”我的加载项”内调用。

23、Step1选取处理区域,step2选择要清除的不可见字符类型(两端空格,不相干的干扰字符,换行符,非打印字符等等)。虽然极少数偏僻字符也不能处理,但已经能把绝大多数干扰字符清洗干净了(测试下能清除8000+个字符)。
