在Excel中運(yùn)用公式查找數(shù)據(jù)時(shí),大部分人首先想到的是Vlookup。Vlookup可以說是大眾情人了,在查找數(shù)據(jù)時(shí)方便快捷。但是Vlookup通常情況下是進(jìn)行正向查找,即條件列在前面,需要返回的結(jié)果列在后面。但是有時(shí)候,我們要查找的數(shù)據(jù)在前面,與查找條件匹配的條件區(qū)域在后面,也就是說我們要進(jìn)行反向查找,這可是讓很多人都覺得麻煩的問題。那么你知道怎樣進(jìn)行反向查找嗎?常用的反向查找套路有哪些?今天我們就來說說反向查找那些事兒。
Index Match結(jié)構(gòu)
Index Match是按條件查找中一個(gè)常見的公式組合,它不僅可以完成單條件查找,也可以完成多條件查找。由于返回結(jié)果列、條件列分別在兩個(gè)參數(shù)里面,所以這個(gè)組合對順序沒有要求。
以下是數(shù)據(jù),我們需要查找某個(gè)客戶對應(yīng)的銷售員是誰。
應(yīng)用公式如下:
=INDEX(A:A,MATCH(G2,B:B,0))
Index的第一個(gè)參數(shù)指明從哪里返回?cái)?shù)據(jù),第二個(gè)參數(shù)指明數(shù)據(jù)所在的位置。第二個(gè)參數(shù)由Match函數(shù)確定要查找的內(nèi)容(客戶名稱)在B列的位置。Match函數(shù)的第三個(gè)參數(shù)是0表示精確查找,這個(gè)是可選參數(shù),大家不要漏掉了,因?yàn)槁┑暨@個(gè)參數(shù)就表示模糊匹配了,返回結(jié)果可能就不是你想要的了。
如果要應(yīng)用多條件查找,就需要使用數(shù)組形式了。
比如以下公式,根據(jù)客戶和發(fā)貨城市兩個(gè)內(nèi)容確定銷售員,這是數(shù)組公式,需要按Ctrl Shift Enter結(jié)束。
=INDEX($A$1:$A$9,MATCH(G2&H2,$B$1:$B$9&$D$1:$D$9,0))
Offset Match結(jié)構(gòu)
Offset函數(shù)的作用是根據(jù)起始點(diǎn),指定橫向、縱向移動(dòng)的距離,返回一個(gè)指定行高、列寬的區(qū)域。所以這里我們可以從結(jié)果列的第一個(gè)單元格開始,確定需要返回結(jié)果所在的位置,然后偏移相應(yīng)的行數(shù)就可以得到結(jié)果了。
公式如下。
=OFFSET(A1,MATCH(G3,B:B,0)-1,)
如果要實(shí)現(xiàn)多條件查找,Match的用法和上面介紹的一樣。
=OFFSET($A$1,MATCH(G3&H3,$B$1:$B$9&$D$1:$D$9,0)-1,)
這也是一個(gè)數(shù)組公式。
Indirect Match結(jié)構(gòu)
其實(shí)不管用Index、Offset還是Indirect,都需要用Match確定要返回的值所在的行,然后根據(jù)不同函數(shù)的特點(diǎn)來更改就可以了。Indirect函數(shù)的作用是根據(jù)文本形式的地址返回該地址的引用。也就是說我們只要生成結(jié)果所在的單元格地址就可以得到具體的內(nèi)容了。比如結(jié)果在A5單元格,其中“A”是固定的,只要用Match函數(shù)得到結(jié)果所在的行號就可以了。
=INDIRECT('A'&MATCH(G4,B:B,0))
如果是多條件查找的話,道理跟上面一樣,這也是一個(gè)數(shù)組公式。
=INDIRECT('A'&MATCH(G4&H4,$B$1:$B$9&$D$1:$D$9,0))
Lookup結(jié)構(gòu)
Lookup有很多經(jīng)典用法,可以根據(jù)范圍來查找,也可以用來精確查找。
Lookup采用二分法來查找數(shù)據(jù),下面這個(gè)結(jié)構(gòu)屬于常見套路之一。公式第二個(gè)參數(shù),0/(B1:B9=G3),表示查找區(qū)域的值等于目標(biāo)值時(shí),返回0,否則返回錯(cuò)誤值。在本例中,這個(gè)參數(shù)的值為:
{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}
公式第一個(gè)參數(shù)是1,表示從查找區(qū)域中找小于或等于1的最大值。在上面的參數(shù)值中我們可以看到中間有一個(gè)0,這個(gè)表示找到了符合的值。
這里要注意,如果存在多行匹配的內(nèi)容,則會返回最后一個(gè)匹配的內(nèi)容,如下圖所示。
使用lookup也可以實(shí)現(xiàn)多條件查找。
=LOOKUP(1,0/(($B$1:$B$9=G3)*($D$1:$D$9=H3)),$A$1:$A$9)
Vlookup if({1,0},,)結(jié)構(gòu)
Vlookup不能直接使用反向查找,但是我們可以重新“構(gòu)造”數(shù)據(jù)區(qū)域,使區(qū)域符合Vlookup的規(guī)則。
如下圖所示,1,0要寫在大括號里面,{1,0},If函數(shù)的第二個(gè)參數(shù)就表示從哪里查找,第三個(gè)參數(shù)表示從哪里返回值。這個(gè)結(jié)構(gòu)的Vlookup第三參數(shù)都是2,因?yàn)槲覀冇肐f構(gòu)造了一個(gè)兩列的數(shù)據(jù)。
=VLOOKUP(G4,IF({1,0},$B$2:$B$9,$A$2:$A$9),2,0)
使用這個(gè)結(jié)構(gòu)也可以實(shí)現(xiàn)多條件查找。
=VLOOKUP(G4&H4,IF({1,0},$B$2:$B$9&$D$2:$D$9,$A$2:$A$9),2,0)
這個(gè)也是數(shù)組公式,需要按Ctrl Shift Enter結(jié)束。
Vlokup Choose({1,2},,)結(jié)構(gòu)
這個(gè)公式跟Vlookup If({1,0},,)結(jié)構(gòu)和原理比較相似,都是重新“構(gòu)造”數(shù)據(jù)區(qū)域,一般情況下掌握一種即可。
=VLOOKUP(G5,CHOOSE({1,2},$B$2:$B$9,$A$2:$A$9),2,0)
同樣的道理,這個(gè)也可以完成多條件查找。
=VLOOKUP(G5&H5,CHOOSE({1,2},$B$2:$B$9&$D$2:$D$9,$A$2:$A$9),2,0)
這個(gè)也是數(shù)組公式,需要按Ctrl Shift Enter結(jié)束。
這么多套路,怎么著也得會幾個(gè)吧?
--End--
QQ群 9735376 426619302 214641323
聯(lián)系客服