想必大家在工作中都遇到過這樣的問題,當我們要進行VLOOKUP匹配的時候,發現我們需要返回的列在查找列的前面,像下圖這樣,此時如果我們直接用VLOOKUP函數進行匹配,我們會發現,無論如何選擇第二參數,查找列都不可能位於第一列,此時Excel就會返回錯誤值,遇到這種情況你是束手無策,還是略知一二,還是只知道怎麼用反向查找,而不知道其中原理?相信看完這篇文章,你所有的疑惑都會得到解答。
我們知道,VLOOKUP函數的查找列必須位於第二參數的第一列,我們最直接的辦法就是將姓名列和學號列交換一下位置,但是一般數據源不允許隨意改動,此時我們就需要用到輔助函數來在計算機內存中構造一個內存數組,這個內存數組只包含兩列,第一列是查找值列,第二列是返回值列,具體如何操作呢?請接著往下看。
方法一:if{1,0}方法。首先我們知道if函數中1和0可以等價替換邏輯值TRUE和FALSE,舉個例子,公式=if(1,"A","B"),得到的結果是"A",而=if(0,"A","B"),得到的結果則是"B"。如果我們將1和0同時寫進if函數的第一參數,則會得到1和0分別在if函數中運行得到的結果,比如:=if({1,0},"A","B"),則會得到結果{A;B}。如果將公式中的A和B換成對應的數據列,則會得到由A和B(此時的A和B代表兩列數據)構成的內存數組,A和B是我們自己選擇的,此時我們可以將查找列放在A位置,返回列放在B位置,如下圖所示:
當我們得到這個內存數組的時候,是不是就可以將這個內存數組作為VLOOKUP函數的第二參數,就可以進行正常的數據匹配了,公式:=VLOOKUP(G3,IF({1,0},C$2:C$23,B$2:B$23),2,),注意:首先我們內存數組只有兩列,所以第三參數是2;然後這個函數是數組公式,需要用Ctrl+shift+回車,三鍵結束,才能得到正確結果,結果如下:
方法二:choose{1,2},其實內在邏輯和if{1,0}是一樣的,只不過是構造內存數組的函數換了一個,我們只需要將if{1,2}換成choose{1,2}即可,公式:=VLOOKUP(G3,CHOOSE({1,2},C$2:C$23,B$2:B$23),2,),結果展示:
看到這裡,相信你對VLOOKUP函數反向查找心中的疑惑已經豁然開朗了,如果還覺得不夠具體,請觀看筆者對於VLOOKUP函數反向查找講解的視頻。純手打不易,希望大家多多支持,能與大家互相學習,共同進步!