您的位置:首頁>正文

10個示例讓你的VLOOKUP函數應用從入門到精通

示例6:使用萬用字元進行部分查找

當需要在清單中查找一個值但沒有完全匹配時, 需要部分查找。

如圖11所示, 如果想要查找列表中的“長江”, 但是列表中只有“長江發電集團”。

圖11

由於列A中沒有完全匹配, 因此不能使用“長江”作為查找值。 近似匹配也會導致錯誤的結果, 並且需要清單以昇冪排序。

然而, 可以在VLOOKUP函數中使用萬用字元來獲得匹配。

在儲存格D2中輸入公式:

=VLOOKUP("*"&C2&"*",$A$2:$A$6,1,FALSE)

並向下拖至儲存格D6, 如圖12所示。

圖12

在上面的公式中, 不是按照原樣使用查找值, 而是在其兩側連接了星號(*)萬用字元。 星號萬用字元可以代表任意數量的字元。

這樣, 告訴Excel需要查找包含儲存格C2中文本的任意文本。 在示例中, 遍歷A2:A6並查找其中包含“長江”的儲存格。

注意, 如果列表中有兩個儲存格都含有“長江”, 那麼VLOOKUP函數只返回第1個找到的值。

示例7:儘管匹配查找值但返回錯誤

有時候, 明明有匹配的查找值, 但VLOOKUP函數卻返回錯誤。

例如, 下圖13所示, 列表中有一個匹配值“Matt”, 但VLOOKUP函數仍然返回錯誤。

圖13

其實, 我們看到的只是表面, 沒有看到清單中文本字串的前後可能存在空格。 如果在文本字串中有額外的空格, 包括之前、之後或中間的空格, 都不是一個匹配值。

這是從資料庫或者從其他地方導入資料時經常會碰到的情況。

可以使用TRIM函數來解決這個問題。 TRIM函數移除文本字串中的前導或尾部的空格, 或者中間多餘的空格。

下面的公式獲得正確的結果:

=VLOOKUP("Matt",TRIM($A$2:$A$9),1,0)

這是一個陣列公式, 輸入完後要同時按下Ctrl+Shift+Enter鍵。

圖14

示例8:執行區分大小寫的查找

預設情況下, 在VLOOKUP函數中的查找值不區分大小寫。 例如, 查找值是MATT、matt、或者Matt, 對於VLOOKUP函數來說都是一樣的, 返回找到的第一個匹配值而不管大小寫。

如果想執行區分大小寫的查找, 那就需要與VLOOKUP函數一起使用EXACT函數。

如圖15所示。

圖15

可以看到, 儲存格A2、A4和A5中有相同的姓名但大小寫不同, 在右側是相應的數學成績。

由於VLOOKUP函數不具備區分大小寫查找值的功能, 因此上面的示例中將總是返回數值38。

要使之區分大小寫, 需要使用輔助列, 如圖16所示。

圖16

在儲存格B2中輸入公式:=ROW(), 下拉至儲存格B9, 填充輔助列, 這些數值為儲存格所在行的行號。

在儲存格F2中輸入陣列公式:

=VLOOKUP(MAX(EXACT(E2,$A$2:$A$9)*(ROW($A$2:$A$9))),$B$2:$C$9,2,0)

其中:

EXACT(E2,$A$2:$A$9)——將儲存格E2中的查找值與儲存格區域A2:A9中所有的值進行比較, 返回由TRUE/FALSE組成的陣列{TRUE;FALSE;FALSE; FALSE; FALSE; FALSE; FALSE; FALSE}, 其中TRUE表示完全匹配。

EXACT(E2,$A$2:$A$9)*(ROW($A$2:$A$9))——將行號與上面由TRUE/FALSE組成的陣列相乘, TRUE值將最終得到行號數字, 其他的為0。 本例中為{2;0;0;0;0;0;0;0}。

MAX(EXACT(E2,$A$2:$A$9)*(ROW($A$2:$A$9)))——從上面所得的陣列中返回最大值。 本例中為2。

將上面得到的值2作為查找值並在儲存格區域B2:C9中執行查找返回相應的值。

示例9:多條件查找

在最基本的VLOOKUP函數用法中, 查找一個查找值, 返回找到的值所在行相應的值。 但是, 經常會碰到使用VLOOKUP函數執行多條件查找的情形。

如圖17所示, 表中有學生姓名、測試的類型以及數學成績。

圖17

要得到每個學生每類測試對應的數學成績, 需要創建一個唯一的查找值。 為此, 添加一個輔助列, 如圖18所示。

圖18

在儲存格C2中的公式:

=A2&”|”&B2

下拉至儲存格C16。這樣,在列C中創建了一個唯一值列表,能夠使用這個輔助列作為查找值。

在儲存格G3中的公式為:

=VLOOKUP($F3&"|"&G$2,$C$2:$D$16,2,0)

向右向下拖放至儲存格區域G3:I7,結果如圖19所示。

公式中將學生姓名和測試類型組合作為查找值。

圖19

在示例中,我們組合兩個文本作為輔助列時使用了分隔符號,這能避免一些意想不到的情況。如下圖20所示,如果不使用分隔符號,組合後的值會相同。

圖20

示例10:在使用VLOOKUP函數時處理錯誤

在不能找到指定的查找值時,VLOOKUP函數返回錯誤值,你可能不希望這些錯誤值影響資料的美觀。

可以使用有意義的文本諸如“沒有找到”來代替錯誤值。

在圖21中,試圖查找黃蓉的成績,但返回一個錯誤值#N/A,因為清單中沒有這個名字。

圖21

下面使用IFERROR函數配合VLOOKUP函數讓有意義的文本代替錯誤值:

=IFERROR(VLOOKUP(D2,$A$2:$A$6,2,0),"沒有找到")

IFERROR函數檢查第1個參數的返回值是否為錯誤值,如果不是錯誤值則返回該值,否則返回第2個參數的值,本例中為“沒有找到”。

圖22

如果是Excel 2007以前的版本,則使用公式:

=IF(ISERROR(VLOOKUP(D2,$A$2:$B$6,2,0)),"沒有找到",VLOOKUP(D2,$A$2:$B$6,2,0))

結語

VLOOKUP函數是我們經常要使用的查找函數,結合具體情形,配合使用其他函數以及使用一些技巧,能夠讓VLOOKUP函數發揮出更大的功能。

圖18

在儲存格C2中的公式:

=A2&”|”&B2

下拉至儲存格C16。這樣,在列C中創建了一個唯一值列表,能夠使用這個輔助列作為查找值。

在儲存格G3中的公式為:

=VLOOKUP($F3&"|"&G$2,$C$2:$D$16,2,0)

向右向下拖放至儲存格區域G3:I7,結果如圖19所示。

公式中將學生姓名和測試類型組合作為查找值。

圖19

在示例中,我們組合兩個文本作為輔助列時使用了分隔符號,這能避免一些意想不到的情況。如下圖20所示,如果不使用分隔符號,組合後的值會相同。

圖20

示例10:在使用VLOOKUP函數時處理錯誤

在不能找到指定的查找值時,VLOOKUP函數返回錯誤值,你可能不希望這些錯誤值影響資料的美觀。

可以使用有意義的文本諸如“沒有找到”來代替錯誤值。

在圖21中,試圖查找黃蓉的成績,但返回一個錯誤值#N/A,因為清單中沒有這個名字。

圖21

下面使用IFERROR函數配合VLOOKUP函數讓有意義的文本代替錯誤值:

=IFERROR(VLOOKUP(D2,$A$2:$A$6,2,0),"沒有找到")

IFERROR函數檢查第1個參數的返回值是否為錯誤值,如果不是錯誤值則返回該值,否則返回第2個參數的值,本例中為“沒有找到”。

圖22

如果是Excel 2007以前的版本,則使用公式:

=IF(ISERROR(VLOOKUP(D2,$A$2:$B$6,2,0)),"沒有找到",VLOOKUP(D2,$A$2:$B$6,2,0))

結語

VLOOKUP函數是我們經常要使用的查找函數,結合具體情形,配合使用其他函數以及使用一些技巧,能夠讓VLOOKUP函數發揮出更大的功能。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示