Excel中lookup與vlookup侷限性二三事

這裏說的侷限性並不是指這兩個函數的侷限性,而是對於剛接觸這兩個函數的人,會因爲使用不當,忽視細節而讓函數返回錯誤值。

一:lookup

     目前在網上關於lookup使用的方法有兩種:

一個是:lookup(查找值,查找區域,返回區域);另一個是:lookup(1,0/(查找值=查找列),返回列);

第一個就是官方給出的lookup函數的用法,但是使用這種方法需要保證一點:查找區域一定是升序排序的

至於爲什麼這就要從lookup函數的查找原理說起了,lookup使用的查找方式是二分查找,這樣的好處就是查找速度非常快,當然缺點也非常明顯。

對於那些我們沒有辦法去給他排序,或者碰到查找的區域是字符而不是數字,沒有順序可言的情況怎麼辦呢?

這就衍生出了第二種方法,這種方法不用進行排序即可。

這種方法進行了錯誤處理:函數中第二個參數仍然是查找區域,但是它對查找區域的值進行了轉換。如圖

他將查找區域中對應的值轉換爲0,其餘轉換爲了錯誤值,解決了需要升序才能進行排序的問題。

當然了lookup函數還是會出現“錯誤情況”的,大多數錯誤情況和下面的vlookup函數一樣,我放在下面介紹。

二、vlookup函數

沒有找到關於vlookup函數實現原理的解釋,但是它確實不用必須升序了。

使用方法:vlookup(查找值,查找範圍,返回值在查找區域中的列數,是否近似匹配)

具體使用方法不細講了,很簡單。

但是有的時候我們不得不面對這樣一個問題,如果我們想返回的結果列在查找區域前面呢?

第三個參數數不能爲負數的,那麼我們就需要轉換一下。

使用方法:vlookup(查找值,if({1,0},查找列,返回列)2,0);

if函數的使用方法:第一個參數爲1(TRUE)返回第二個參數,否則返回第三個參數

如果當第一個參數同時爲1,0的時候會怎樣呢?他會同時返回第二個和第三個參數。

所以相當於把vlookup函數的查找區域轉換成了if函數的兩個返回值,所以應該明白怎麼回事了吧。

這個轉換和上面說的lookup函數本質上其實一樣。會用一個就夠了

重點說說vlookup函數和變形後的lookup函數易錯點:

參考文章:https://www.youideal.net/cms/a/18419.html,圖文來自這篇文章,如侵權立刪。

一:

明明有王明卻沒有查到

原因:有看不見的空格,影響了結果

二:=VLOOKUP(D2,A:B,2)

 

兩個格子內容完全一致,返後結果仍然錯誤。

原因:公式應該加上一個參數,值爲0,公式的第四個參數表示是否近似匹配

這裏應該爲精確匹配,公式應該是=VLOOKUP(D2,A:B,2,0)

至於精確匹配和模糊匹配的區別,好像前者是遍歷,後者是二分。

前者找不到就返回錯誤,後者會返回小於其最接近的一個。

三:

公式沒有問題,數字也一樣,可是又錯了。

原因:這又是一個初學者頭疼的問題,那就是單元格格式

A列是用文本類型存儲的數字,也就是說其在計算機內部的存儲方式是字符串

而E列的單元格格式是常規,也就是用數字型存儲的646這個數字。

進行比較的時候當然就不一樣了。

解決方法:轉換單元格格式(右鍵-》設置單元格格式)

或者改一下公式:

修改公式爲(連接空字符&“”轉換成文本格式,如果是文本轉數字則用*1方法轉換)=VLOOKUP(E2&"",A:C,2,0) 

嗯。。大體就總結了這些

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章