VLOOKUP 是大家最常用的查詢(xún)函數(shù),一般也是帶領(lǐng)大家進(jìn)入 Excel 函數(shù)大門(mén)的“啟蒙老師”。不過(guò)它并不是萬(wàn)能的,有些時(shí)候它也有做不到的事情。咱們先回顧一下 VLOOKUP 的語(yǔ)法。
反人類(lèi)版的語(yǔ)法:
VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
地球人能看懂的語(yǔ)法:
VLOOKUP (第 1 參數(shù),第 2 參數(shù),第 3 參數(shù),[可有可無(wú)的第 4 參數(shù)])
語(yǔ)法解析:
第 1 參數(shù):找什么(查找值)
第 2 參數(shù):哪里找(查找區(qū)域)
第 3 參數(shù):第幾列(返回值在查找區(qū)域的第幾列)
第 4 參數(shù):精確還是模糊(0 或 1,默認(rèn)為 1)
在使用 VLOOKUP 的時(shí)候,對(duì)于第 2 個(gè)參數(shù)(即查找值與返回值所在的單元格區(qū)域),查找值所在列必須在返回值所在列之前,不然函數(shù)無(wú)法工作。
如下圖所示,如果需要查詢(xún)鍵盤(pán)對(duì)應(yīng)的存貨編碼,則需要將 A、B 兩列進(jìn)行對(duì)換,即存貨名稱(chēng)這一列必須在存貨編碼這一列的前面!那么,圖中的情況下,該怎么查詢(xún)呢?每次都要將兩列數(shù)據(jù)進(jìn)行互換嗎?

當(dāng)然不是!我們有 6 種解決方法!
1. VLOOKUP + IF
=VLOOKUP(E3,IF({1,0},B2:B10,A2:A10),2,0)

另外 3 個(gè)參數(shù)不難理解,核心在于用 IF 函數(shù)和數(shù)組公式構(gòu)造的第 2 參數(shù)。簡(jiǎn)單的說(shuō),就是利用 IF 函數(shù),值為 1 即 TRUE 的時(shí)候返回 B 列單元格,值為 0 即 FALSE 的時(shí)候返回 A 列單元格, 重新構(gòu)造查找區(qū)域,也就是 B 列存貨名稱(chēng)在前、A 列存貨編碼在后的新單元格區(qū)域。這個(gè)時(shí)候, VLOOKUP 函數(shù)就可以正常查找了。
以后將會(huì)開(kāi)篇詳細(xì)說(shuō)明 IF 和 {1,0} 的使用方法哦,敬請(qǐng)期待。
2. VLOOKUP + CHOOSE
=VLOOKUP(E3,CHOOSE({1,2},B2:B10,A2:A10),2,0)

這里就是將 IF 函數(shù)替換為 CHOOSE 函數(shù),效果是一樣的,也就不再特別說(shuō)明了。注意哦,這里不是 {1,0} 而是 {1,2}。
3. LOOKUP
=LOOKUP(1,0/(E3=B2:B10),A2:A10)

這里就先不作解釋了,不然篇幅太長(zhǎng),以后開(kāi)篇單獨(dú)介紹 LOOKUP 函數(shù)的用法。這里童鞋們只要將里面的單元格替換,就能變成自己的公式啦。
4. INDEX + MATCH
=INDEX(A2:A10,MATCH(E3,B2:B10,0))

簡(jiǎn)單說(shuō)明一下,MATCH 函數(shù)也是查找函數(shù),但是它返回的不是單元格的值,而是行號(hào)或者列號(hào)。比如 MATCH(“顯卡”,B2:B10,0),返回的是 7 這個(gè)數(shù)值,也就是說(shuō) 顯卡 在 B2:B10 的第 7 行這個(gè)位置。而 INDEX 函數(shù)的作用是,返回 A2:A10 這個(gè)區(qū)域第幾行的內(nèi)容,例如 INDEX(A2:A10,7) ,就會(huì)返回 A2:A10 這個(gè)區(qū)域的第 7 行內(nèi)容,也就是 B0007 這個(gè)值。
通過(guò)將這兩個(gè)函數(shù)組合,MATCH 函數(shù)返回行號(hào)作為INDEX 的第 2 參數(shù),INDEX 函數(shù)返回單元格區(qū)域?qū)?yīng)行號(hào)的值,兩個(gè)函數(shù)完美搭配,實(shí)現(xiàn)反向查詢(xún)!
5. OFFSET + MATCH
=OFFSET(A1,MATCH(E3,B2:B10,0),)

OFFSET 函數(shù)是將基點(diǎn)單元格進(jìn)行移動(dòng)的函數(shù),可以返回移動(dòng)后單元格的值。它有 3 個(gè)必填參數(shù):
- 基點(diǎn)單元格
- 移動(dòng)的行數(shù):向下移動(dòng)為正數(shù),向上移動(dòng)為負(fù)數(shù)
- 移動(dòng)的列數(shù):向右移動(dòng)為正數(shù),向左移動(dòng)為負(fù)數(shù)
注意到上面公式里最后一個(gè), 嗎,因?yàn)檫@里用不到第 3 參數(shù),但是它又是必填的,所以這里只能填寫(xiě)一個(gè)逗號(hào)作為代替。
拿查找 鼠標(biāo) 為例,它在 B2:B10 的第 4 個(gè)位置,利用 MATCH 函數(shù)即可返回這個(gè)值。然后利用 OFFSET 的位移功能,將 A1 向下移動(dòng) 4 個(gè)單元格即 A5 ,是不是返回鼠標(biāo)對(duì)應(yīng)的存貨編碼了呢。
6. INDIRECT + MATCH
=INDIRECT("A"&MATCH(E3,B2:B10,0)+1)

INDIRECT 函數(shù)的作用是將文本轉(zhuǎn)換為真正可以使用的公式。比如在單元格里輸入 "=A8",回車(chē)之后你只能看到 =A8 這幾個(gè)字符,而不是 A8 這個(gè)單元格的內(nèi)容 B0007。
但是INDIRECT 函數(shù)就可以做到。
咱們又換一個(gè)查詢(xún)內(nèi)容,這次就用 手機(jī) 吧。通過(guò) MATCH 函數(shù)返回手機(jī)在 B2:B10 的第 2 個(gè)位置,也就是 B3 單元格,行號(hào)是 3,所以這里需要 +1。對(duì)應(yīng)的存貨編碼也是在第 3 行,所以咱們只要構(gòu)造出 A3 就可以得到手機(jī)對(duì)應(yīng)的存貨編碼了。這個(gè)時(shí)候,把這些字符往 INDIRECT 函數(shù)里面丟進(jìn)去就行啦,最后類(lèi)似于 INDERECT("A"&2+1) 這樣的存在?;剀?chē)之后是不是返回正確的值了呢?大家可以驗(yàn)證一下。
上面這 6 種方法童鞋們是不是的掌握了呢。如果有不理解的地方可以在留言里咨詢(xún)哦,也可以前往各大搜索引擎搜索哈。以后我也會(huì)開(kāi)篇講解各個(gè)函數(shù),大家繼續(xù)關(guān)注哦。
還有示例文件這里下載哦,大家練練手吧~
— THE END —
關(guān)注微信公眾號(hào)Excel全攻略(微信號(hào):ExcelSkills),發(fā)現(xiàn)更多精彩內(nèi)容……
