如何在excel中實現(xiàn)反向查詢

我們平時在用excel一般都是正向查找,舉個栗子:

下面這個簡單的表里面,給你一個id,比如201903,查出對應的名字來,用vlookup函數(shù)很簡單就能實現(xiàn)。

通過編號查名字

那反向查找呢,給你“cc”,讓你查對應的編號是多少。我們知道vlookup有四個參數(shù)(用誰查,在哪個區(qū)域查,返回這個區(qū)域的第幾位,精確還是模糊查),第三個參數(shù)是不能為負數(shù)的,所以用通常的方法沒法實現(xiàn)反向查找的功能。

那遇到這種情況怎么辦呢?

最簡單的辦法當然是直接在名字后面把編號復制一欄,然后繼續(xù)用vlookup,一次性的查找用這種方法還可以,查完之后把公式刪了,再把輔助列刪了就好了,經(jīng)常更改的數(shù)據(jù)用這種方法,數(shù)據(jù)就冗余了。

下面介紹三種不用輔助列的反向查找的方法:(悄悄說一句,其實再過一陣子,微軟發(fā)布了xlookup函數(shù)后,就可以直接支持這種功能了,有興趣的可以直接看微軟官方文檔:xlookup

1、offset+match函數(shù)

offset函數(shù)的作用,一句話描述就是:選定一個單元格,然后可以向上下左右四個方向進行移動,返回移動后選中的單元格的值

match函數(shù)的作用,返回一個值在一個區(qū)域內是第幾個,比如b在(a,b,c,d)這個區(qū)域里面就是第二個

具體到這個例子上來,offset函數(shù)以“編號”這個單元格做基準單元格,用match函數(shù)查出“cc”這個值在名字這一列中的第幾個,然后作為offset函數(shù)向下移動的值就好了

offset+match 實現(xiàn)反向查找

2、vlookup函數(shù)

vlookup函數(shù)其實也可以實現(xiàn)反向查找,只是不能用我們常用的方式實現(xiàn),需要用數(shù)組公式配合。

在介紹這個方法之前,我們先了解一下vlookup函數(shù)查找的原理:

vlookup函數(shù)的第二個參數(shù)是一個區(qū)域,這個區(qū)域在excel中其實就是一個數(shù)組,舉個栗子:

最普遍的vlookup用法

然后我們選中第二個參數(shù),按F9:

vlookup的參數(shù)變成了數(shù)組

f9的作用是運算你選中的區(qū)域,從這個例子我們可以看出,vlookup其實就是在一個數(shù)組里面查第一個參數(shù)對應的值,所以要反向查找的話,我們只需要構建一個第一列是所需查找的值的數(shù)組就好了。

話不多說,直接上公式:

vlookup函數(shù)實現(xiàn)反向查找

這個函數(shù)的第二個參數(shù)是:if({1,0},用于查找的值所在的列,需要返回的值所在的列),用這種方法構建了一個新的數(shù)組,我們還是用f9來看一下:

創(chuàng)建新的數(shù)組

這個新的數(shù)組把aa,bb……這一列放在了前面,后面對應需要返回的值,變相將兩列換了位置,就能用vlookup函數(shù)進行正常查找了。

3、lookup函數(shù)

lookup函數(shù)也是查找函數(shù),有時候用起來比vlookup還簡單,但為什么不被廣泛使用呢,因為這個函數(shù)需要升序排列,舉個栗子:

lookup有兩個參數(shù)和三個參數(shù)的形式,這邊用到的是三個參數(shù):(查找值,查找值所在的區(qū)域,返回值所在區(qū)域)

lookup函數(shù)演示

正常說來,查找201907返回的應該是ee,但因為左列數(shù)值沒有升序排列,返回值變成了gg,也就是把左邊一列升序排列后201907對應的值。因為這個限制,所以這個函數(shù)沒有被廣泛使用。

下面說用lookup實現(xiàn)反向查找,還是直接上公式:

lookup實現(xiàn)反向查找

在這個例子里面,查找值不是cc,而是1,為什么呢,我們一步步看,先用f9選中(B2:B11=D2),這一步返回的是一系列布爾值,如下圖:

布爾值

我們看到,除了第三個值以外,別的都是false,因為B2:B11的第三個單元格和D2相等,而我們知道,false其實就等于0,true等于1

所以原公式里面,用0/(B2:B11=D2),相當于用1除以0和1,得到的是一個錯誤值和0組成的數(shù)組:

錯誤值和0組成的數(shù)組

除了第三項意外,其他值都是錯誤值。

這個時候,lookup函數(shù)用第一個參數(shù)1,去這個數(shù)組中查找,毫無疑問是查不到值的,根據(jù)lookup函數(shù)的原理,查不到值的時候,會查找小于查找值的最大的值,而這個例子里面,小于1的最大值也就是0,所以成功查到了第三項,然后將第三個參數(shù)中的第三項“201903”返回,得到正確值。

總結一下,其實vlookup和lookup函數(shù)的實現(xiàn)方式其實都是用構建一個新的數(shù)組的方式實現(xiàn)的,如果有別的方式可以構建符合他們需要的數(shù)組的話,其實一樣可以實現(xiàn)反向查找。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容