Excel非常強大,數據處理和分析能力給我們的工作帶來了非常大的幫助,今天我們就來了解Excel的函數Vlookup,讓我們逐步成為Excel大神。
Vlookup函數的語法是:
Vlookup(lookup_value,table_array,col_index_num,[range_lookup]),其中
True或1代表模糊匹配,可以省略,這裡注意一下,模糊匹配時需要對lookup_value對應列,即table_array的第一列進行升序排序,結果返回的是小于lookup_value的最大數值
False或0代表匹配匹配,可以省略,不需要加逗号
什麼意思呢?就是說你可以通過這個函數在一個表格區域(table_array)内查找一個值(lookup_value),返回該值所在行的第col_index_num列的數據。
如果是精準匹配(range_lookup等于False或0),則在table_array内查找等于lookup_value的數據,找到後返回table_array中的第col_index_num列數據,如果沒找到,返回#N/A,如果有多個等于lookup_value的數據,隻返回第一個。
如果是模糊匹配(range_lookup等于true或1),則在table_array内從第一個數據開始匹配,沒有匹配到一樣的值就繼續與下一個值進行匹配,直到遇到大于查找值的值,此時返回上一個數據對應table_array中的第col_index_num列數據,如果沒找到,返回#N/A。
我們用一個例子來描述:我們模拟了一班學生的兩個考試成績表格
1.基礎用法
在表一中,根據G12的學生姓名查找期末成績,放到H12中。
我們隻要在H12中輸入公式:=VLOOKUP(G12,B5:E12,3,FALSE)
公式的含義是:在B5:E12區域内,在B列中查找等于(第4個參數是False,所以是等于)G12的數據,找到後,返回D列(第3個參數是3,所以是D列)對應的數據。
2.多個條件組合查找
在表二中,根據G18的學生姓名和H18的考試場次查找曆史成績,放到I18中。
我們隻要在I18中輸入公式:
=VLOOKUP(G18&H18,IF({1,0},B18:B25&C18:C25,D18:D25),2,FALSE)
然後同時按Ctrl Shift Enter結束,關于IF函數的用法,請參考我的另一篇文章“如何成為Excel大神—IF函數”。
公式的含義是:在IF({1,0},B18:B25&C18:C25,D18:D25)返回的區域内,在第1列中查找等于(第4個參數是False,所以是等于)G18&H18的數據,找到後,返回D列(第3個參數是2,所以是D列)對應的數據。
3.動态返回列數據(第3個參數動态獲取)
在表一中,根據G12的學生姓名查找期中、期末及平均成績,放到H12:J12中。
我們隻要在H12中輸入公式:
=VLOOKUP($G12,$B$5:$E$12,MATCH(H$11,$B$4:$E$4,0),FALSE)
右拉到J12列填充公式,公式中的$表示絕對引用。
公式的含義是:在B5:E12區域内,在B列中查找等于(第4個參數是False,所以是等于)G12的數據,找到後,返回MATCH(H$11,$B$4:$E$4,0)返回的值對應列的數據。
MATCH(H$11,$B$4:$E$4,0):在$B$4:$E$4中查找H$11所在位置,就是第幾列。
4.從右到左查找
Vlookup函數從左邊列往右邊列查,但我們有時需要根據右邊列查左邊列的數據,在不允許變動表格列的情況下,我們可以用進行IF配合。
在表一中,根據G12的學生期末成績查找學生姓名,放到H12中。
我們隻要在H12中輸入公式:
=VLOOKUP(G12,IF({0,1},B5:B12,D5:D12),2,FALSE)
然後同時按Ctrl Shift Enter結束,關于IF函數的用法,請參考我的另一篇文章“如何成為Excel大神—IF函數”。
公式的含義是:在IF({0,1},B5:B12,D5:D12)返回的區域内,在第1列中查找等于(第4個參數是False,所以是等于)G12的數據,找到後,返回2列(第3個參數是2)對應的數據。
5.交叉查找
很多時候我們需要同時根據行列信息查找交叉單元格的數據。
在表一中,根據G12的學生姓名查找期末的成績,放到H12中。
我們隻要在H12中輸入公式:
=VLOOKUP($G12,$B$5:$E$12,MATCH(H$11,$B$4:$E$4,0),FALSE)
公式的含義是:在B5:E12區域内,在B列中查找等于(第4個參數是False,所以是等于)G12的數據,找到後,返回MATCH(H$11,$B$4:$E$4,0)返回的值對應的數據。
MATCH(H$11,$B$4:$E$4,0):在$B$4:$E$4中查找H$11所在位置,就是第幾列
大家可能發現,這個公式和第3點的一樣,是的,隻要是動态獲取第3個參數col_index_num的需求,都可能考慮這樣的寫法。
6.區間查找
假如我們有如下圖規則,根據該規則對表一的平均成績進行評價。
我們要根據學生平均分所在區間,來得出評價,我們需要添加評價區間數據進行輔助查詢,然後利用Vlookup的模糊匹配實現該功能。
首先我們要對G18:G21升序排序。
我們在F5中輸入公式:
=VLOOKUP(E5,$G$18:$H$21,2,TRUE)
公式的含義是:第4個參數是True,所以是模糊匹配,用平均分E5在$G$18:$H$21區域内查找,從第一個數據開始匹配,匹配到就返回該數據,沒有匹配到一樣的值就繼續與下一個值進行匹配,直到遇到大于查找值的值,此時返回上一個數據,找到後,返回H列(第3個參數是2,所以是H列)數據。
7. 查詢結果是合并單元格
在表一中,查找G12對應的平均分,而這個平均分是個合并單元格。
我們隻要在H12中輸入公式:
=VLOOKUP(9E 307,OFFSET(E5,,,MATCH(G12,B5:B12,0)),1,1)
9E 307表示Excel支持的最大數值。
公式的含義是:先通過MATCH(G12,B5:B12,0)獲取到G12在B5:B12中的位置為6,那麼OFFSET函數返回的數據是E5:E10,再用VLOOKUP的模糊查詢查找并返回。
如果這種方法感覺很繞,急忙看不明白,那我們換一種處理辦法。
添加一個輔助列,用VLOOKUP函數把合并單元格的列拆分成不合并的。
在F5中輸入公式:=VLOOKUP(9E 307,E$5:E5,1,1),往下填充到F12。
9E 307表示Excel支持的最大數值。
下來在H12中輸入公式:=VLOOKUP(G12,B5:F12,5,0)
8.查詢區域存在合并單元格
我們将演示數據修改成如下圖,要查找二班李四的成績,班級列存在合并單元格,姓名列存在重名。
在I12中輸入公式:=VLOOKUP(H12,INDIRECT("C"&MATCH(G12,B:B,0)&":D25"),2,0)
公式的含義是:先通過MATCH(G12,B:B,0)獲取到G12在B列中的位置為22,得到字符創“C22:D25”,然後用INDIRECT函數返回該字符串對應的區域數據,這時公式其實就變成=VLOOKUP(H12,C22:D25,2,0),第2列就是我們想返回的列。
9.通配符查找
Vlookup函數支持通配符(*和?)查找
星号表示任意一串字符,問号表示任意單個字符,
如果需要查找星号和問号本身,需要在星号和問号前加波形符~,
此時星号和問号隻代表一個字符,不是通配符。
想查找包含~的數據時,隻要在~前面加波形符~,“~~”就是查找~
因為這個比較容易理解,我們不舉例子了
10.查找一個值,返回多個結果
我們将演示數據修改成如下圖,要查找男生的成績
首先我們添加一個輔助列,在A18中輸入公式=(C18=$G$12) E17,往下填充到A25,目的是每發現一名男生,數字 1。
我們隻要在H12中輸入公式:=IFERROR(VLOOKUP(ROW(A1),$A$2:$E$11,4,0),"")
往下填充公式,看到空值就表示查完了。
11. lookup_value和table_array格式不一緻
lookup_value和table_array格式不一緻時,将無法返回想要的結果,無法修改原數據格式時,可以通過将lookup_value轉換成和table_array一樣的格式來解決,格式不一緻有2種情況。
隻要在lookup_value後面添加&"",就是說給lookup_value加上一個空字符串,讓它變成字符串
隻要在lookup_value後面添加*1,就是讓lookup_value變成數值
Ok,大功告成,你離大神又進了一步。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!