Vlookup函數查找易犯的錯誤以及解決方法
Vlookup函數是一個非常好用的查找函數,但由於種種原因,實際使用時會遇到種種讓人搞不明白的錯誤,本文對各種常見錯誤進行總結並介紹相關解決方法。文章比較長,可以收藏起來慢慢看。
... 1
一、函數參數使用錯誤... 1
1、第2個參數區域設置錯誤之1. 1
2、第2個參數區域設置錯誤之2. 2
3、第4個參數少了或設置錯誤。... 3
4、看似模糊查找實則精確查找... 3
二、數字格式不同,造成查找錯誤... 4
5、查找為數字,被查找區域為文本型數字。... 4
6、查找格式為文本型數字,被查找區域為數值型數字。... 5
三、引用方式使公式複製後產生錯誤。... 6
7、沒有正確的使用引用方式,造成在複製公式後區域發生變動引起錯誤。... 6
四、多餘的空格或不可見字元... 6
8、數據表中含有多餘的空格。... 7
9、類空格但非空格的字元。... 7
10、不可見字元的影響。... 8
11、反向查找vlookup不支持產生的錯誤。... 9
12、通配符引起的查找錯誤。... 10
13、vlookup函數第1個參數不直接支持數組形式產生的錯誤... 11
五、跨表引用不同版本引用無效... 11
14、在Excel2003版本引用Excel2007或者以上版本提示無效。... 11
六、單元格格式設置錯誤公式顯示不了結果... 12
15、單元格只顯示公式不顯示公式結果。... 12
一、函數參數使用錯誤1、第2個參數區域設置錯誤之1例:如圖1所示,根據姓名查找齡時產生錯誤。
圖 1
錯誤原因: vlookup函數第2個參數是查找區域,該區域的第1列有一個必備條件,就是查找的對象(A9),必須對應於區域的第1列。本例中是根據姓名查找的,那麼,第二個參數姓名必須是在區域的第1列位置,而上述公式中姓名列是在區域A1:E6的第2列。所以公式應改為:=VLOOKUP(A9,B1:E6,3,0)
2、第2個參數區域設置錯誤之2例2 如圖2所示根據姓名查找職務時產生查找錯誤。
圖 2
錯誤原因:本例是根據姓名查找職務,可大家注意一下,第2個參數B1:D6根本就沒有包括E列的職務,當然會產生錯誤了。所以公式應改為:=VLOOKUP(A9,B1:E6,4,0)
3、第4個參數少了或設置錯誤。例3,如圖3所示根據工號查找姓名。
圖 3
錯誤原因:vlookup第4個參數為0時表示精確查找,為1或省略時表示模糊查找。如果忘了設置第4個參數則會被公式誤以為是故意省略,按模糊查找進行。當區域也不符合模糊查找規則時,公式就會返回錯誤值。所以公式應改為=VLOOKUP(A9,A1:D6,2,0)
或 =VLOOKUP(A9,A1:D6,2,) 註:當參數為0時可以省略,但必須保留「,」號。
4、看似模糊查找實則精確查找例4,通過簡稱或關鍵字模糊匹配查找全稱
如圖4,要看B列的遊戲名稱在A列是否存在,B列遊戲名稱是A列的一部分,在B列遊戲名稱前後加上通配符*,再用Vlookup查找,C2公式=Vlookup(""*""&B2&""*"",$A$1:$A$10,1,0),注意,這裡最後一個參數要用0,精確查找,很多人誤以為是模糊匹配最後一個參數為1。從要查找的內容看是模糊匹配,但是從公式看是精確查找。
圖 4
二、數字格式不同,造成查找錯誤5、查找為數字,被查找區域為文本型數字。例5:如下圖所示根據工號查找姓名,查找出現錯誤。
圖 5
錯誤原因:在vlookup函數查找過程中,文本型數字和數值型數字會被認為不同的字元。所以造成無法成功查找。
解決方案:把查找的數字在公式中轉換成文本型,然後再查找。即:
=VLOOKUP(A9&"""",A1:D6,2,0)
或者用分列,前2步默認,第3步把常規改為文本。
圖 6
6、查找格式為文本型數字,被查找區域為數值型數字。例6:如圖7所示根據工號查找姓名,查找出現錯誤。
圖 7
錯誤原因:同5
解決方法:把文本型數字轉換成數值型。即:
=VLOOKUP(A9*1,A1:D6,2,0)
或者直接選中要轉換為數值的單元格或區域,點擊下拉框的轉換為數字。
圖 8
文本與數字的相互轉換方法請點擊批量文本格式與數字格式的相互轉換
三、引用方式使公式複製後產生錯誤。7、沒有正確的使用引用方式,造成在複製公式後區域發生變動引起錯誤。例7,如圖9所示,當C9的公式複製到C10和C11後,C10公式返回錯誤值。
圖 9
錯誤原因:由於第二個參數A2:D6是相對引用,所以向下複製公式後會自動更改為A3:D7,而A10中的工號A01所在的行,不在A3:D7區域中,從而造成查找失敗。
解決方案:把第二個參數的引用方式由相對引用改為絕對引用即可。
B9公式改為:=VLOOKUP(A9,$A$2:$D$6,2,0)
四、多餘的空格或不可見字元8、數據表中含有多餘的空格。例8, 如圖10所示,由於A列工號含有多餘的空格,造成查找錯誤。
圖 10
錯誤原因:多一個空格,用不帶空格的字元查找當然會出錯了。
解決方案: 1、手工替換掉空格。建議用這個方法。
2、在公式中用trim函數替換空格而必須要用數據公式形式輸入。
即:=VLOOKUP(A9,TRIM(A1:D6),2,0) 按【Ctrl Shift Enter】輸入後數組形式為{=VLOOKUP(A9,TRIM(A1:D6),2,0)}
9、類空格但非空格的字元。在表格存在大量的「空格」,但又用空格無法替換掉時,這些就是類空格的不可見字元,這時可以「以其人之道還之其人之身」,直接在單元格中複製不可見字元粘貼到替換窗口,替換即可。
圖 11
10、不可見字元的影響。例: 如圖12所示的A列中,A列看上去不存在空格和類空格字元,但查找結果還是出錯。我們可以用exact函數判斷單元格內容是否完全一致,當返回結果為true,表示結果完全相同,當結果為false,表示單元格內容不完全一致。
圖 12
公式=exact(A4,B9)返回結果為false,說明表面看上去內容相同的A4和B9單元格實際上內容不一致。或者不用exact函數,直接用公式=A4=B9。
出錯原因:這是從網頁或資料庫中導入數據時帶來的不可見字元,造成了查找的錯誤。
解決方案:在A列後插入幾列空列,然後對A列進行分列操作(數據→分列),即可把不可見字元分離出去。
圖 13
11、反向查找vlookup不支持產生的錯誤。例10 如圖14所示的表中,根據姓名查找工號,結果返回了錯誤。
圖 14
錯誤原因:vlookup不支持反向查找。
解決方法:
1、 用if函數重組區域,讓兩列顛倒位置,或者直接通過複製粘帖把兩列位置互換。
=VLOOKUP(D8,IF({0,1},D2:D4,E2:E4),2,0)
要將Excel兩列位置互換,除了複製粘帖還有更簡單的方法嗎?
2、 用index match組合實現。
=INDEX(D2:D4,MATCH(D8,E2:E4,0))
12、通配符引起的查找錯誤。例12,如圖15所示,根據區間查找提成返回錯誤值。
圖 15
錯誤原因:~用於查找通配符,如果在vlookup公式中出現,會被認為特定用途,非真正的~。如在表格中查找3*6 ,356,376也被查找到。
圖 16
如果精確查找3*6,需要使用~,如圖17所示。
圖 17
解決方法:用~~就可以表示查找~了。所以公式可以修改為
=VLOOKUP(SUBSTITUTE(A8,""~"",""~~""),A2:B4,2,0)
13、vlookup函數第1個參數不直接支持數組形式產生的錯誤例13:如圖18所示,同時查找A和C產品的和,然後用SUM求和。
圖 18
錯誤原因: VLOOKUP第一個參數不能直接用於數組。
解決方法:利用N/T IF結構轉化一下數組,公式修改為:
=SUM(VLOOKUP(T(IF({1},A8:B8)),A2:B5,2,))
或者用sumif函數解決,公式為=SUM(SUMIF(A2:A5,{""A"",""C""},B2:B5))
五、跨表引用不同版本引用無效14、在Excel2003版本引用Excel2007或者以上版本提示無效。例如, 工作簿1 要查找的數據是Excel 2003 版本, 數據源在工作簿2, 版本為
Excel 2007 或者以上版本,在工作簿1 的B2 單元格輸入公式=Vlookup(A2,[ 工作簿2]
Sheet1!$A:$B,2,0),提示如圖19所示的錯誤:
圖 19
如果公式改為=Vlookup(A2,[ 工作簿2]Sheet1!$A$1:$B$65536,2,0) 則不會提示錯誤,
這是因為Excel 2003 版本最多只能承載256 列65536行數據,而Excel2007 或者以上版本可以承載1048576 行16384 列數據,當數據源引用的行數超過了要查找的數據所在工作表最多能承載的行數時,引用就無效了。
解決方法:把低版本的Excel文件轉換為高版本的文件,點擊左上方的文件或office按鈕,可以看到下面這個選項,點擊轉換,就可以把2003版本的文件轉換為2007或以上版本的文件。
圖 20
六、單元格格式設置錯誤公式顯示不了結果15、單元格只顯示公式不顯示公式結果。如圖21單元格公式沒有問題,但是無法顯示結果,按
【Ctrl 1】進入設置單元格格式,顯示文本,當單元格格式為文本格式,只顯示公式不顯示結果。這個不僅僅對vlookup函數是這樣的,其他函數也如此。
圖 21
圖 22
推薦閱讀:
※對訴訟離婚的幾種錯誤認識
※合理的上桿和常見錯誤 聽語音
※(44)新「男德」守則:身為男人,你還在犯這25個錯誤嗎?
※哪些食物最減肥?盤點挑選減肥食物時最容易犯的五大錯誤!
※岳飛的八大致命錯誤