下面我們將介紹VLOOKUP函數。顧名思義,這是一個查找函數,處理垂直列表中的項目。
其它函數可能會更好地從表中提取數據,但VLOOKUP函數是人們首先想到要試的函數。有些人馬上能掌握它,而另一些苦于如何使它工作。的確,這個函數有一些缺陷,但是一旦你理解它如何工作,你就會準備好繼續一些其它的查找選項。
讓我們來看看VLOOKUP函數的介紹及一些示例。
VLOOKUP函數查找表中第一列的值,返回該表中找到的值所在行的某個值。
什么情況下使用VLOOKUP?
VLOOKUP函數可以在查找列中找到精確的匹配,或者近似的匹配。因此,它能夠:
找到所選擇的產品的價格
將學生成績的百分數轉換成字母等級
VLOOKUP 語法
VLOOKUP函數的語法如下:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
lookup_value: 想要查找的值— 可以是數值,也可以是單元格引用。
table_array: 查找表— 可以是2列或多列單元格區域引用或者單元格名稱。
col_index_num: 想返回值的列,基于表中的列號。
[range_lookup]: 對于精確匹配,使用FALSE或者0;對于近似匹配,使用TRUE或1,查找值所在的列按升序排列。
VLOOKUP陷阱
VLOOKUP可能是慢的,特別是在未排序的表中查找文本字符串并且需要精確匹配。盡可能使用首列按升序排列排序的表,使用近似匹配。可以先使用MATCH函數或COUNTIF函數檢查數值,確保它在表的第一列。
其它函數,諸如INDEX函數和MATCH函數,可以用于從表中返回值,并且更有效、更靈活和更強大。
示例1: 找到所選擇的項目的價格
VLOOKUP函數查找表的左側列中的值。在本例中,查找所選擇的產品的價格。獲取正確的價格是重要的,因此使用下面的設置:
在單元格B7中輸入產品名稱
價格查找表有兩列,在單元格區域B3:C5
價格在表的第2列
FALSE用于最后一個參數,為查找值查找精確匹配
在單元格C7中的公式是:
=VLOOKUP(B7,B3:C5,2,FALSE)
如果在查找表的第一列沒有找到產品名稱,VLOOKUP公式的結果是#N/A。
示例2: 轉換百分數為字母等級
通常,在使用VLOOKUP時需要精確匹配,但有時近似匹配會更好。例如,當轉換學生成績百分數為字母等級時,不想在查找表中輸入每一個可能的百分數。相反,可以為每個字母等級輸入最低的百分數,然后使用帶近似匹配的VLOOKUP。在本例中:
在單元格C9中輸入百分數
百分數查找表有兩列,在單元格區域C3:D7
查找表對百分數列按升序排序排序
字母等級在表中的第2列
TRUE用于最后一個參數,為查找值查找近似匹配
單元格D9中的公式是:
=VLOOKUP(C9,C3:D7,2,TRUE)
如果在查找表的第1列沒有發現百分數,VLOOKUP公式的結果是小于lookup_value的最大值。本例中查找值是77,這個值不在百分數列中,因此返回值75(B)。
示例3: 使用近似匹配找到精確價格
當為文本字符串查找精確匹配時,VLOOKUP函數可能是慢的。本例中,我們為所選擇的產品查找價格,無須使用精確匹配設置。為了避免不正確的結果:
查找表第1列按升序排序
COUNTIF檢查值,避免不正確的結果
在單元格C7中的公式是:
=IF(COUNTIF(B3:B5,B7),VLOOKUP(B7,B3:C5,2,TRUE),0)
如果在查找表的第1列沒有找到產品名稱,VLOOKUP公式的結果是0。