plsql trim去不掉空格_Excel中使用TRIM与CALEN都无法清除空格与不可见字符时怎么办...

你好,我是小必,感谢与你在这里相遇。

我的第299篇原创Excel文章

66a7f57468af89ba9e4a179be0a9fd0c.png

今日内容:Excel工作表中打打印字符或空格。

今天有位小伙伴问了一个关于工作表单元格中的空格与非打印字符。但是常规的替换,使用TRIM函数与CALEN常规函数是无法删除。

如图所示,是待清除的字符串的内容。每个姓名的前面或者末尾都有一个空格或者非打印字符。

b13ddc46016f327bf5656c1e9bb7c9c6.png

对于上面的字符串的长度使用LEN函数测一下,看看与实际的长度对比:

d15be7de32e118b0ebdbb7905d43843a.png

先使用常规的TRIM与CLEAN函数进行清理,看看结果:

e0bba783b9a9fc06d830ca8fe192f250.png

然后再测试一下结果的长度与未清理前的长度:

d1bad9fbe977044f1173bbb7f19bfacc.png

从上面的结果来看,前三行都没有清理干净。

然后使用了复制粘贴到替换功能中也未能清理完成。

那么到底是怎么回事呢,主要问题出在CLEAN函数上。

有时文本值包含前导空格、尾随空格或多个嵌入空格字符(Unicode 字符集值 32 和 160),或非打印字符(Unicode 字符集值 0 到 31、127、129、141、143、144 和 157)。 执行排序、筛选或搜索操作时,这些字符有时会导致意外结果。

CLEAN函数只能清除非打印字符(unicode字符集值在0到31位)。即从文本中删除 7 位 ASCII 代码中的前 32 个非打印字符(值 0 到 31)。

TRIM函数从文本中删除 7 位 ASCII 空格字符(值 32)。

那么对于Unicode的值 为127、129、141、143、144 和 157的无法清除,同样地TRIM函数也无法清除Unicode值为160的字符。

那么要查看字符串中的Unicode值可以使用Excel中的Unicode函数与Unichar函数来相互转换。如将上述案例中的A2单元格中的姓名的最后一字符的值为:

3019234c947d50188507b40ff58d351e.png

发现上面的字符的值为160。

既然不能使用TRIM函数与CLEAN函数来清理,那么转换一下思路,可以使用替代的方法,即使用SUBSTITUTE函数进行间接地清理。

在清理的过程中需要先将160的值转换成对应的非打印字符,可以使用公式:

=UNICHAR(160)

那么先清理对应的TRIM与CLEAN无法清理的,然后剩下的交给这两个函数。根据这个思路,来解决上面的问题。

在B2单元格中输入以下公式:

=CLEAN(TRIM(SUBSTITUTE(A2,UNICHAR(160),"")))

30c484257b49b51788823780fed38ce9.png

同样地,如果是其他的大于32位以上的空格或者非打印字符,先测出其值是多少,再转换回来,最后替换掉即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值