今天小伙伴问了个问题
看上去啥也没有,为什么黏贴到记事本上前面那么多空白呢?
典型的不可见字符惹出来的麻烦,这个往往是公司软件导出数据造成的
我们今天就来细说说不可见字符的那些事
拿上面的例子说明
大部分不可见字符,这一步就能看出原型,上图是前面不可见
下面图为后面不可见字符
鼠标放过去,会看到后面也有一段不可见字符
这里介绍一个函数CODE函数,它是返回一个文本字符串在本机字符集代码
这里我们拿第一个字符出来,看下他的编码是多少,显示是9(是TAB空格,不是真正的空格,真正的空格编码是32)
这里再介绍一个公式CLEAN函数,删除文本中不可以打印的字符
这里用CLEAN函数清理之后,复制-黏贴为数值(它不是万能的后面会介绍)
这样处理后,这个不可见字符就删除了
• 我们经常遇到的,这个人录入的时候,手误了,前面或者后面加了空格就是字符集编码是32的那个
为了清除头和尾的空格,而中间的正常空格,我们是不处理的,CLEAN函数就处理不了,这里介绍一个函数:
TRIM(单元格地址),专门处理上面这种情况的函数
这里注意了,新手记账常见,中间有个空格,两边记录的时候不注意就弄多了空格了
这样处理,复制—黏贴为数值,就搞定了
• 肉眼看的出来区别,但是CLEAN函数处理不了
前面我就说了CLEAN函数不是万能的,经常会遇到,明明肉眼可以看到区别,但是就是清洗不了
这个例子来说,“我”字前面是有一个不可见字符的
但是,不好意思,CLEAN就是处理不了,怎么办?
这里介绍几个方法
1,鼠标选中这个位置,替换掉
鼠标选中,CTRL+C复制
然后CTRL+H弹出替换菜单
复制进去,替换就好了
这种方法,大部分都可以处理了
2,公式方法
这里用的SUBSTITUTE函数,语法如下:
SUBSTITUTE(文本字符串,要替换的字符串,替换成的字符串,[可选参数表示如果重复替换第几个,默认是全部替换])
这里还是用的复制大法,直接黏贴进去函数里第二参数
还可以和其他函数配合使用
这个例子,我们还是要分析,它到底是谁?
可以看出是编号127的字符
上面的函数,我们可以换成这样
又来新知识了,CHAR函数,这里正好和CODE函数相反,他是根据编码得到ASCII字符
这个方法是比较常用解决下面问题,看不出区别的时候,最快的解决方法
• 肉眼看不出区别了,选也选不中了,但是就不同
这里介绍下LEN函数,返回的是第一个字符串的长度,看B3知道正常应该是6个字符,但是却显示7个
先剧透,最前面有一个字符,所以我们用LEN函数判断字符串长度的时候,发现B3单元格的字符多了一位
但是,你是看不出区别的,也选不中,然后可怕的事情是下面的
我用上面的方法,找到它的code值,SUBSTITUTE函数CHAR(63)处理之后,依然还在
是不是有点懵,又到了介绍新知识的时候了!
我们上面说的函数CODE CHAR函数都是处理ASCII编码的,ASCII编码是有极限的,它设计出来是处理英文环境下的字符的,但是世界上语言涉及字符非常多,尤其中文更是如此,必须有一套新的编码方案才能解决,这就发展出了一套更大更全适合多国语言的编码方案,它就是UNICODE,这里字符其实UNICODE编码里的字符,UNICODE包含ASCII字符,但是比它多很多
篇幅有限,这里就不展开来讲这两种编码方案具体原理和差别
又要介绍几个新函数了,对应的是
UNICODE函数和CODE函数一样使用
UNICHAR函数和CHAR函数一样使用
所以这里,换2个对应函数来处理就解决了
这里看出来实际那个不可见字符是UNICODE编码里的65279字符
CODE识别不了的时候,很多字符都会返回63,实际上其实不是,如果遇到这个问题,就用更全面的函数UNICODE函数来识别
可能小伙伴们还晕,看总结,晕的回头再来一遍
- 如果状态栏能看出来的,试试替换功能和函数方法
- 如果状态栏看不出来的,要先找出它的字符编码是多少,然后用替换函数配合CHAR函数处理
- 如果遇到UNICODE编码不可见字符,用UNICODE函数和UNICHAR函数处理
喜欢就关注我吧,每天分享职场知识,办公技巧!