我以前寫過兩篇關(guān)于VLOOKUP函數(shù)的文章,,流傳甚廣,在這兩篇文章中,,我把VLOOKUP吹上了天,。 如果你對此函數(shù)用的不太熟,先來學(xué)習(xí)這兩篇文章: 進(jìn)階|熟練使用VLOOKUP函數(shù)之精解精析【深度長文】 在眾多查找函數(shù)中,,VLOOKUP確實(shí)稱得上扛把子的,,但是它也有局限性,這不,,一對多查找他似乎就無能為力,。
檢察院以人民的名義派了三個(gè)小組去抓貪官,需要從左面的表格中查找出二組的成員,,但是二組對應(yīng)兩個(gè)成員,,也就是說一次要查找并返回兩個(gè)值。 我們知道Vlookup總會以第一個(gè)被找到數(shù)據(jù)作為最終的匹配數(shù)據(jù),,所以,,當(dāng)有兩個(gè)”二組“同時(shí)存在時(shí),很自然的,,它只能默認(rèn)為匹配首個(gè),,也就是說只能返回”高育良“。 那么,,是不是傳說中的Vlookup遇到這種情況也只能望洋興嘆,,無能為力啊,? 當(dāng)然不是,! 作為專業(yè)從事匹配工作的函數(shù),Vlookup只是需要一些額外的輔助,。 需要注意的是,,原生態(tài)的Vlookup,用于匹配的數(shù)據(jù)必須是唯一的,,這是由函數(shù)的四個(gè)參數(shù)決定的,,改變不了這個(gè)事實(shí),所以我們只能從查找匹配的數(shù)據(jù)源上進(jìn)行改造,。 — 01 — 構(gòu)造輔助列
雖然一個(gè)組別對應(yīng)多為成員,,但是這種對應(yīng)也是有規(guī)律的。比如,,第一個(gè)“一組”對應(yīng)“侯亮平”,,第二個(gè)“一組”對應(yīng)“陳海”……
所以,,為了實(shí)現(xiàn)一對一匹配,,需要構(gòu)建出組別的次序。在C2單元格中輸入公式=COUNTIF(A$2:A2,A2),,并向下復(fù)制填充,,可以得出每一個(gè)組別的次序。
然后在B列左側(cè)插入一個(gè)新列,,并將A列數(shù)據(jù)和C列數(shù)據(jù)組合(使用&進(jìn)行單元格組合),,形成新的數(shù)據(jù)列,如圖,。
奇跡出現(xiàn)了,,使用新組別這一列數(shù)據(jù)去查找成員,相當(dāng)于為每一個(gè)組別創(chuàng)造了唯一的識別碼,,再用Vlookup時(shí),,就能精確地一對一匹配到了。
你看,,原以為搞不定一對多排序是VLOOKUP函數(shù)的問題,,實(shí)際是數(shù)據(jù)源的問題。至此,,可得出解決此問題的關(guān)鍵點(diǎn)為: ①通過COUNTIF函數(shù),,制造出序列(難點(diǎn)是A$2:A2動(dòng)態(tài)引用,這是創(chuàng)造正確編號的核心),; ②通過&組合組別和次序,,制造唯一性,。 — 02 — 實(shí)現(xiàn)VLOOKUP一對多查找
萬事俱備只欠東風(fēng),最后一步——Vlookup多條件匹配,。 在G2單元格中寫入公式=VLOOKUP(F$2&ROW(A1),B:C,2,0),,然后向下復(fù)制填充,直到出現(xiàn)#N/A錯(cuò)誤,,則會返回“二組”對應(yīng)的所有成員,。
這里使用ROW(A1)函數(shù)生成序列,然后再與F2單元格組合,,于是就依次生成“二組1”,,“二組2”,相當(dāng)于VLOOKUP函數(shù)的第一個(gè)參數(shù)依次按照“新組別”中的參數(shù)出現(xiàn),。 — 03 — 還能怎么玩 上面的查找方式,,將查找的多個(gè)結(jié)果依次放入不同的行單元格中,這就導(dǎo)致無法批量查找,,即無法同時(shí)查找“二組”和“三組”的成員,,必須分開寫公式。
所以,,通常情況下,,我們會將查找到的多個(gè)結(jié)果放入不同列中,效果如下圖所示,。 稍微對公式進(jìn)行修改,,就能實(shí)現(xiàn)這樣的效果。 在G2單元格中寫入公式=VLOOKUP($F2&COLUMN(A$1),$B:$C,2,0),,并向下拖動(dòng)填充,,然后向右拖動(dòng)填充,直到每一個(gè)組別對應(yīng)的成員都出現(xiàn)錯(cuò)誤值#N/A為止,,這說明每一個(gè)組別對應(yīng)的成員都被查找出來了,。
我們將此公式 =VLOOKUP($F2&COLUMN(A$1),$B:$C,2,0) 與上文中的公式對比 =VLOOKUP(F$2&ROW(A1),B:C,2,0)
首先第一個(gè)參數(shù)變成了($F2&COLUMN(A$1),這是因?yàn)槲覀冃枰瑫r(shí)查找“二組”,、“三組”,、“一組“對應(yīng)的成員,因此在向下復(fù)制時(shí),,引用的單元格需要依次變更為F3,、F4,所以這里的$F2需要對行需要對行進(jìn)行相對引用,,又因?yàn)楣叫枰蛴覐?fù)制,,必須確保引用的一直是F列的數(shù)據(jù),所以列為絕對引用,。 同理,,我們在列方向進(jìn)行填充,,因此需要是使用COLUMN函數(shù)構(gòu)造序號。
— 04 — 屏蔽錯(cuò)誤值 因?yàn)槲覀兪孪炔恢酪粋€(gè)組別對應(yīng)幾名成員,,所以必須一直向右填充公式,,直到出現(xiàn)錯(cuò)誤值為止,才算把所有的數(shù)值查找完畢,。 為了避免出現(xiàn)錯(cuò)誤值,可以使用IFERROR函數(shù)進(jìn)行嵌套,。 將G2單元格中的公式改為 =IFERROR(VLOOKUP($F2&COLUMN(A$1),$B:$C,2,0),,'') 第一參數(shù)就是查找公式,第二參數(shù)代表“如果第一參數(shù)的運(yùn)算結(jié)果為錯(cuò)誤值時(shí)所顯的自定義的值”,。這里,,可以設(shè)定為'',也就是顯示為“空”,。 這樣,,向右復(fù)制到出現(xiàn)空單元格為止即可。 臥槽,,一個(gè)VLOOKUP函數(shù)都被玩出花了,! ·END· IOS專用打賞,一種碉堡了的打賞方式 ↓↓↓ |
|