今天小夥伴問了個問題
看上去啥也沒有,為什麼黏貼到記事本上前面那麼多空白呢?
典型的不可見字符惹出來的麻煩,這個往往是公司軟件導出數據造成的
我們今天就來細說說不可見字符的那些事
拿上面的例子說明
大部分不可見字符,這一步就能看出原型,上圖是前面不可見
下面圖為後面不可見字符
鼠标放過去,會看到後面也有一段不可見字符
這裡介紹一個函數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函數來識别
可能小夥伴們還暈,看總結,暈的回頭再來一遍
喜歡就關注我吧,每天分享職場知識,辦公技巧!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!