我們都知道,在Excel2013裡面最常用的查詢函式是vlookup,比如根據員工工號查詢他的考勤、工資等等,還有根據學生的考號查詢他的成績,這個最受歡迎的vlookup函式都可以一鍵幫我們搞定,但是vlookup函式有個致命的缺點,就是查詢值必須在查詢區域的首列,那麼在查詢值不在首列的情況怎麼完成查詢呢?
工具/原料
excel2013
1.vlookup函式正向查詢
為了和後面的逆向查詢做個對比,我們先來看下vlookup函式的正向查詢,利用工號查詢姓名,
=VLOOKUP(E5,A2:B11,2,0)的意思就是以E5單元格的工號為查詢值,在A2到B10的查詢區域,在首列中找到與E5相同的工號,然後返回這個區域中與之對應的第2列(也就是姓名列)的姓名。這就是vlookup函式的正向查詢,那麼現在我想以姓名為查詢值,在這個區域裡查詢和姓名對應的工號要怎麼辦呢?
2.vlookup函式的逆向查詢一
逆向查詢的第一種方法同樣是利用vlookup函式,搭配if函式重新構建個數組來使用。這個公式的用法是利用if({1,0},B2:B11,A2:A11)返回一個姓名在前,工號在後的多行兩列的記憶體陣列,這樣它就符合vlookup函式的查詢值在首列的要求,可以順利進行查找了。
3.vlookup函式的逆向查詢二
vlookup函式逆向查詢的第二種方法是搭配choose函式重新構建一個記憶體陣列,choose({1,2},B2:B11,A2:A11)同樣是返回一個姓名在前,工號在後的多行兩列的記憶體陣列,與if不一樣的是,choose函式變成了{1,2},這點大家要注意。
4.index和match函式的結合使用
=INDEX(A2:A11,MATCH(E8,B2:B11,0))。公式首先使用match函式E8單元格姓名在B2到B10單元格中的相對位置5,也就是這個區域所在第幾行,再以此作為index函式的索引值,從A2到A11單元格中返回對應位置的內容。這個公式看似繁瑣,實際在查詢時其組合靈活多變,可以完成從左到右,從上到下等多個方向的查詢。
5.lookup函式
=LOOKUP(1,0/(E8=B2:B11),A2:A11)這是比較經典的lookup函式的用法,首先用E8=B2:B11得到一組邏輯值,再用0除以這些邏輯值,得到由0和錯誤值組成的記憶體陣列,再用1作為查詢值,在剛才得到的記憶體陣列中查詢,如果lookup函式得不到查詢值,那麼它與查詢區域中小於或等於查詢值的最大匹配值匹配,因此是以最後一個0進行匹配,並返回A2到A11中相同位置的值。
6.以上四種逆向查詢方法的總結
給大家介紹了四種逆向查詢的方法,那麼它們又有什麼區別呢?如果查詢的結果有多條,也就是我們查詢一個姓名的時候出現了多個工號,這就說明公司有重名的現象,這個時候前三個逆向查詢的公式都是返回首個滿足條件的值,而lookup函式則是返回最後一個滿足條件的值,這一點大家要格外格外的注意。
注意事項
碼字不易,且贊且珍惜。