我們都知道,在Excel2013里面最常用的查詢函數是vlookup,比如根據員工工號查詢他的考勤、工資等等,還有根據學生的考號查詢他的成績,這個最受歡迎的vlookup函數都可以一鍵幫我們搞定,但是vlookup函數有個致命的缺點,就是查詢值必須在查詢區域的首列,那么在查詢值不在首列的情況怎么完成查詢呢?
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中相同位置的值。
新聞熱點
疑難解答