這裏說的侷限性並不是指這兩個函數的侷限性,而是對於剛接觸這兩個函數的人,會因爲使用不當,忽視細節而讓函數返回錯誤值。
一: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)
嗯。。大體就總結了這些