今天在公司幫同時處理表格數據時,要運用到vlookup函數來匹配數據,但是一直處理不好,原因是格式的問題。
先介紹vlookup的使用
怎么查詢匹配帶有合並單元格的數據?在合並單元格中只有第一個單元格存在數據,被合並的其他單元格需被匹配,結果也是返回該第一個單元格內容。
在下圖中,通過姓名,來匹配他們所在的業務組。
在各種查找匹配函數中,lookup函數的功能既強大又全面,而且它返回最后一個文本的功能恰好可以用在這個問題中。
我們先寫入公式,再逐步進行解析。
=LOOKUP("座",INDIRECT("A1:A"&MATCH(E3,B1:B14,)))
這個公式中還嵌套了INDIRECT函數和MATCH函數。
MATCH函數是返回某個值在一組區域中的位置,在這個公式中即意為返回“尹正”在姓名列中的位置,結果為12。
INDIRECT函數是引用函數,可以簡單理解為返回單元格地址文本所引用的數據。所謂的單元格地址文本就是A1、B1等等單元格地址。
INDRECT的表達式為:=INDIRECT(“單元格地址文本”),如果參數添加了雙引號,則直接返回該文本所引用的數據內容。
回到我們之前寫的公式,INDIRECT("A1:A"&MATCH(E3,B1:B14,)),則表示引用“A1:A12”單元格區域的數據內容,因為match返回的位置是12。
INDIRECT函數引用的結果是一個數組,因此可以作為LOOKUP的查找區域參數。
而關於LOOKUP函數的查找值為什么設置為“座”,就如同lookup函數會返回最后一個值一樣,是它特定的一種功能屬性,不用去深究,記住如何使用即可。不過作者君也可以提一下,由於“座”的拼音“zuo”在中文中已經是很靠后的了,所以可以用於在查找返回一組文本區域中的最后一個文本。
我們按下F9來看一下INDIRECT公式的結果,查找值“座”返回匹配的最后一個文本正是“業務組4”。
以上參考:https://baijiahao.baidu.com/s?id=1719941289616258482&wfr=spider&for=pc
同樣的方法,但是總是不行,如下圖
解決方法:
思考了許久才發現是格式的問題。
新建一個表格,然后把里面的格式用格式刷刷一下表格在用公式即可。
vlookup函數的使用方法
“Lookup”的漢語意思是“查找”,在Excel中與“Lookup”相關的函數有三個:VLOOKUP、HLOOKUO和LOOKUP。下面介紹VLOOKUP函數的用法。Vlookup函數的作用為在表格的首列查找指定的數據,並返回指定的數據所在行中的指定列處的數據。其標准格式為:
VLOOKUP(lookup_value,table_array,col_index_num , range_lookup)
步驟1、VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)可以寫為:
VLOOKUP(需在第一列中查找的數據,需要在其中查找數據的數據表,需返回某列值的列號,邏輯值True或False)
步驟2、Lookup_value為“需在數據表第一列中查找的數據”,可以是數值、文本字符串或引用。
步驟3、Table_array 為“需要在其中查找數據的數據表”,可以使用單元格區域或區域名稱等。
⑴如果 range_lookup 為 TRUE或省略,則 table_array 的第一列中的數值必須按升序排列,否則,函數 VLOOKUP 不能返回正確的數值。
如果 range_lookup 為 FALSE,table_array 不必進行排序。
⑵Table_array 的第一列中的數值可以為文本、數字或邏輯值。若為文本時,不區分文本的大小寫。
步驟4、Col_index_num 為table_array 中待返回的匹配值的列序號。
Col_index_num 為 1 時,返回 table_array 第一列中的數值;
Col_index_num 為 2 時,返回 table_array 第二列中的數值,以此類推。
如果Col_index_num 小於 1,函數 VLOOKUP 返回錯誤值 #VALUE!;
如果Col_index_num 大於 table_array 的列數,函數 VLOOKUP 返回錯誤值 #REF!。
步驟5、Range_lookup 為一邏輯值,指明函數 VLOOKUP 返回時是精確匹配還是近似匹配。如果為 TRUE 或省略,則返回近似匹配值,也就是說,如果找不到精確匹配值,則返回小於lookup_value 的最大數值;如果 range_value 為 FALSE,函數 VLOOKUP 將返回精確匹配值。如果找不到,則返回錯誤值 #N/A。