1、亂碼問題:
今天正好碰到這種情況,想起來寫一寫。
有時從客戶那裡拿到的CSV等文件,直接用excel打開是這樣的:
其實觀察一下會發現?的地方一般就是中文,實質上是中文字符顯示不出來。有小夥伴一直是單獨下個WPS解決的(wps似乎可以自動識別),但其實excel本身是可以識別的,只是多了一步。
先放解決辦法再講原理:
非常簡單,右鍵文件(一般是csv之類的),使用notepad(記事本)打開:
通常就會發現可以看到中文了。這時另存為文件,在編碼的地方選擇utf-8:
然後再用excel打開即可。或者再換個別的編碼。
如果還是不行,且你的電腦平時在一些如軟體名稱等地方也會顯示亂碼,可能是因為你電腦的區域設置有問題。百度一下如何更改系統區域設置,把english改成china再重啟一下電腦,一般就可以了。
原理其實很簡單,通俗來講我們的語言文字(不管是中文英文還是其他各種語言)都需要以一定的形式轉換告知電腦,然後電腦再進行轉換才能在屏幕上顯示出我們看到的文字,很多人所熟知的ASCII就是最普遍的一種。而像上述顯示亂碼的情況就是從資料庫導出數據的過程中,中文字符以一種叫UTF-8的編碼儲存了,但excel默認不是以這種編碼形式打開的(似乎是ANSI或Unicode),於是就會發生無法識別產生亂碼的情況。
所以一般玩遊戲或者碼代碼的小夥伴會比較注意,在安裝路徑中儘量不包括中文文件名,有時未知的報錯就是因為程序本身未考慮到這種情況而導致中文路徑無法被程序識別。
另外,由於自帶的notepad雖然會檢測對應的編碼但有時不一定準確,可以試試一個免費的文本軟體notepad++,雖然也不能自動識別,但可以直接在內部選擇不同的編碼查看效果。這個文本軟體功能比較多,包括有些txt導入excel後直接切割效果不好,也可以使用這個來分隔。另外一個更輕量級的是notepad2(雖然我沒用過),也是可以直接改編碼查看的。
總的來說一般數據出現亂碼都是編碼有問題,往這個方向嘗試即可。
2、看起來一樣卻v不出來
有時候使用客戶系統導出來的數據進行vlookup的時候會有一種問題,就是明明看起來一模一樣,並且使用查找也可以找到,偏偏就是死活v不出來(排除區域未絕對引用的情況),而且往往你會發現這種單元格也無法被轉換單元格格式。像這種,行標籤是索引,就是v不出來。
這時候簡單一點的問題可能是,前後有空格(實質可能並不是空格)。於是從單元格中選取空格,使用替換功能替換即可。(如果確實是空格,用trim也可以)
但還有一種更噁心的情況,就是在編輯欄裡看來看去都一樣,也沒找到任何空格:
這時候其實跟上述所說的編碼問題也有一些類似,就是這個單元格裡有excel完全無法識別且不顯示的字符。這時請使用len()函數查看單元格字符長度:
你一般會驚訝地發現,明明看起來只有5,但是顯示長度卻是7,也就是有完全不顯示的字符。一般這種字符都是在開頭或者結尾,所以知道了原因,使用mid函數嘗試去掉頭或者尾就好了。
另外還有一種更粗暴的方式,就是現在excel有快速填充功能:
本質上可以說是各種left mid right trim等等函數的簡單大集合,也就是你不用再思考使用哪個函數,第幾位開始,第幾位結束,先填一個例子,比如在第一行旁邊手動輸入45104,再點一下,就自動幫你識別好了並且往下填充了。這個搜一搜也有很多講解,就不贅述了。
總之這樣處理之後,你就可以順利地vlookup啦~