進(jìn)行培訓(xùn)時候,答疑過程中接收到一位工作人員對我的詢問,是一個非常典型的匹配問題,但這個匹配問題相當(dāng)?shù)募?。牛閃閃發(fā)現(xiàn)這類問題一定在職場過程中會碰到,所以趕緊和大家分享一下。
我對他的數(shù)據(jù)模型進(jìn)行簡化,畢竟不能拿人家真實(shí)的數(shù)據(jù)文檔,大概的意思就是要利用型號B和型號A兩個條件,來匹配B2:E16的數(shù)據(jù)區(qū)域,得到相應(yīng)的產(chǎn)品編號。

如果這個簡單解決的,無非就是調(diào)整列的位置,然后vlookup函數(shù)進(jìn)行匹配即可??蛇@位工作人員希望不要調(diào)整每個列的位置,因?yàn)楸砀袷枪竟潭ǖ哪J?。這樣下來就麻煩了,型號A和型號B之間居然還隔著一個叫MTF的字段列,這個如何進(jìn)行匹配呢?還有就是vlookup默認(rèn)是向右查詢,這次是向左查詢,所以這個問題解決起來肯定有點(diǎn)難度?牛閃閃教大家牛牛的搞定。
解題思路是,利用vlookup的反向查詢的if函數(shù)數(shù)組功能,構(gòu)造一個符合vlookup函數(shù)的“虛擬數(shù)據(jù)區(qū)域”,然后利用vlookup函數(shù)實(shí)現(xiàn)匹配。
具體操作如下:
首先,我們構(gòu)造vlookup的查詢字段,是有型號A和型號B組合而成,所以vlookup函數(shù)的第一個參數(shù)為:I3&H3 。注意型號A在前面,型號B在后面,用&連接符連接起來。
接著構(gòu)造一個vlookup函數(shù)的“虛擬數(shù)據(jù)區(qū)域”,如下圖的愿望效果:

從上圖可以看出,vlookup的虛擬構(gòu)造區(qū)域,需要先型號A和型號B組合成一個新列,然后在把產(chǎn)品編號列放在右側(cè)。那應(yīng)該如何實(shí)現(xiàn)呢?利用if函數(shù)的數(shù)組功能。
使用的下段函數(shù)
if({1,0},C2:C16&E2:E16,B3:B16)
對照下圖看,{1,0}中1表示左邊,0表示右邊。
C2:C16&E2:E16
表示將型號A和型號B連接后,放在數(shù)據(jù)的左邊。
B3:B16
表示產(chǎn)品型號放在數(shù)據(jù)的右邊。
從而在計(jì)算機(jī)的內(nèi)存中構(gòu)造出一個,上圖紅框處期望的兩列的數(shù)據(jù)庫查詢區(qū)域。

最后就簡單了,利用vlookup函數(shù)查詢虛擬區(qū)域的第二列返回產(chǎn)品編號。完整的函數(shù)輸入如下:
=VLOOKUP(I3&H3,IF({1,0},$C$3:$C$16&$E$3:$E$16,$B$3:$B$16),2,0)
注意函數(shù)錄入完畢之后,需要按住ctrl+shift鍵,在敲回車鍵,然后函數(shù)外面產(chǎn)生一個大括號,函數(shù)才會生效,最后拖拽或雙擊數(shù)據(jù)填充柄實(shí)現(xiàn)其他行的匹配。

總結(jié):本例算vlookup函數(shù)的高級用法,不單單是反向查詢的問題,更是構(gòu)造虛擬數(shù)據(jù)區(qū)域的問題。所以=VLOOKUP(I3&H3,IF({1,0},$C$3:$C$16&$E$3:$E$16,$B$3:$B$16),2,0) 紅色部分推薦大家掌握。
技巧 Excel2010及版本以上有效,大家可參與該Office技巧作業(yè)。