你应该在使用Excel时遇到过这样的情况:明明看到要查找的数据在目标区域是存在的,但vlookup查找数据却返回错误提示,匹配不到想要的内容。商品价格区域有“西红柿”及价格,但在下方使用vlookUp显示找不到。究其原因,是价格表中含有不可见字符。从表面上看,价格表中的“西红柿”前面是没有任何字符的。但实际上它前面有一个制表符。从图中编辑栏中可以看到红色框中有一块空白,那就是制表符。但在单元格中显示是看不出任何异常的。事实上,我们经常从网页或者其他软件中获取数据到Excel中。在这个过程中会有很多肉眼不可见的字符混杂其中。由于肉眼很难看出问题,所以在匹配查找出错时也很难排查。文本内容 | 单元格内字符长度 | 说明 |
工人 | 2 | 正常文本,不含特殊符号 |
半角空格 | 5 | 字符前带半角空格,TRIM 可删首尾,网页 / 录入残留 |
全角空格 | 6 | 字符前带全角空格,宽度 = 汉字,ERP / 中文粘贴高频,TRIM 删不掉 |
网页不间断空格 | 8 | 字符前后有NBSP空格,网页复制常有,不自动换行、TRIM 无效、匹配失效 |
制表符 | 5 | 前后带有TAB键生成的制表符 |
换行 符 | 4 | 字符中间带有ALT+ENTER生成的换行符 |
回车 符 | 4 | 字符中间带有含有ENTER回车符 |
从第2列的字符长度可以看出,除了第一个“工人”字符没有不可见字符,其余都有。因为第2列的数字比我们能看到的字符数量要多。如果遇到这种情况,匹配不到结果是非常正常的。但也是必须要解决的。=TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(A2,CHAR(160)," "),UNICHAR(12288),"")))
先用substitute公式两次,分别替换NBSP空格(CHAR(160))和全角空格(UNICHAR(12288))。然后用clean清除其他不可见符号,最后用Trim函数去除文本两端的空格。显然清洗后的长度已经比没清洗前的长度小了。说明不可见字符已经被清除。注意
注意:这个清洗公式只清除特殊不可见字符以及字符串两端的空格,对于字符串中间的空格是不会清除的。因为trim只清除两端空格。
如果你觉得这篇文章对你有帮助的话,不妨关注一下公众号👇
也可以分享给你的朋友。