VLOOKUP函數(shù)在日常工作中十分常見,以至于你要是沒用過VLOOKUP函數(shù),你都不好意思說你懂EXCEL。一般情況下,我們需要在源數(shù)據(jù)中查找某個(gè)指定列的數(shù)據(jù),就會用到VLOOKUP函數(shù)(如果是指定行的數(shù)據(jù),則用HLOOKUP函數(shù))。這個(gè)時(shí)候“指定列”一般習(xí)慣用常數(shù)(如1,2,3,4,5)。
那么,如下圖,當(dāng)需要在綠色單元格引用源數(shù)據(jù)表中的多列函數(shù)時(shí),公式/函數(shù)該如何寫?
乍一看,這個(gè)不難啊,三個(gè)字段“性別”,“興趣”“電話”分別用VLOOKUP函數(shù)寫個(gè)公式就好了。嗯,用三個(gè)VLOOKUP函數(shù)固然可以。但是,如果有5個(gè)字段,20個(gè)字段呢?這個(gè),是不是有點(diǎn)煩躁?
所以,今天我們要用VLOOKUP函數(shù)與MATCH函數(shù)嵌套使用獲取多列數(shù)據(jù),以提高效率。
1.VLOOKUP函數(shù)
語法:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
第三參數(shù)col_index_num可以是常量(指定第幾列),也可以是變量(通過函數(shù)運(yùn)算返回一個(gè)數(shù)字)。如果能在第三參數(shù)寫進(jìn)一個(gè)函數(shù),是不是可以根據(jù)不同字段返回不同列數(shù)呢?
2.MATCH函數(shù)
含義:返回指定數(shù)值在指定數(shù)組區(qū)域中的位置
語法:MATCH(lookup_value, lookup_array, match_type)
從MATCH函數(shù)含義可以看出,MATCH函數(shù)返回的是“位置”(數(shù)字),恰好可以滿足我們的要求。
3.VLOOKUP函數(shù)與MATCH函數(shù)嵌套使用
現(xiàn)在我們在I2單元格輸入以下公式:
=VLOOKUP($H2,$A$1:$F$9,MATCH(I$1,$A$1:$F$1,0),0)
然后復(fù)制粘貼到所有的綠色單元格,或者向右,向下拖拽。可以看到結(jié)果完全正確。
在這里,MATCH函數(shù)將查找“性別”,“興趣”,“電話”在A1到F1中的位置,再將返回值(數(shù)字)賦與VLOOKUP第三參數(shù)。那么,無論有多少個(gè)需要查找的字段,這個(gè)MATCH函數(shù)都相應(yīng)返回對應(yīng)的位置數(shù)字。也就是說,我們只需要寫這一個(gè)公式就夠了
4.成敗關(guān)鍵—混合引用
$A$1絕對引用。復(fù)制或者拖拽,引用單元格固定不變。
A1相對引用。復(fù)制或者拖拽,引用的單元格根據(jù)行/列位置變化而變化。
$A1或者A$1混合引用。復(fù)制或者拖拽,$符號后面的行/列保持不變。
在上面的例子中,我們需要在固定在H列中找到查找值,所以VLOOKUP函數(shù)中一定要在H2的H前加上$符號,得到$H2;
同時(shí),我們需要固定在第一行中找到查找的字段,所以MATCH函數(shù)中一定要在I1的1前加上$符號,得到I$1。
如此,才能確保我們在復(fù)制/拖拽過程中單元格被正確引用。如果希望進(jìn)一步加深理解絕對/相對/混合引用,可以嘗試做一個(gè)“九九乘法表”。如下圖:
PS:做99乘法表的方法用數(shù)組做其實(shí)更簡單(可以看我之前的關(guān)于理解數(shù)組原理的文章);還可以用模擬運(yùn)算表{TABLE()}。
5.延伸思考
COLUMN函數(shù),ROW函數(shù)返回的分別是單元格所在第幾列,第幾行。在這個(gè)例子中能不能用VLOOKUP函數(shù)和COLUMN函數(shù)嵌套?效率如何?在什么情況下時(shí)候嵌套更好用呢?
這幾個(gè)問題留給大家思考,有興趣的話歡迎私信我交流討論。
飛機(jī)從北京飛往紐約,一定不止一條航線,可以往北極方向飛,也可以往南極方向飛,還可以跨太平洋飛。但是最后航空公司一般會選擇往北極方向飛。因?yàn)檫@條航線效率高,經(jīng)濟(jì)效益最好。
同理,在使用EXCEL的過程中,我們也需要不斷思考,如果讓我們的工作效率更高。