什麼?VLookUp() 沒有區分“大小寫”??

是的,有在使用 Excel 的朋友,請注意。
這就是“事實”。

所以,當你有“大小寫”字串查詢的需求時,就要特別注意。

問題解說與排除:
從 EXCEL 原始被查詢資料表中,可以看到有些查詢字串,有大小寫的區別。
在這樣的情況下,我們用 VLOOKUP函數 來查找資料,會得到錯誤的結果。
例如:delta 應該對應到 03B4,而結果卻是 0394。(圖二)

原始被查詢資料表
image

image

要解決這類型的問題,
我們需要:

首先在 EXCEL 原始被查詢資料表 (此一活頁簿是獨立的,名稱:來源
的 A列 後面插入一列輔助列,並在B1儲存格裡,輸入公式 =ROW()

image

接下來,在需查詢資料的區域中,做接續的設定工作。
如圖:C 欄位是需填寫查詢結果的區域
image

請在 C1 儲存格中,輸入如下公式,並按 Ctrl+Shift+Enter ,以結束此一陣列公式的輸入。

=VLOOKUP(MAX(EXACT(A1, 來源!$A$1:$A$57) * ROW(來源!$A$1:$A$57)), 來源!$B$1:$C$57, 2, FALSE)

並得到如上面圖表中的 C 欄位結果值。


接下來,讓我們來了解一下,這些設定的意義:

VLOOKUP後面三個參數是基礎用法,不需解釋。

在第一個參數中,我們使用的 EXACT() 用來對比 A1 儲存格的內容,是不是和 來源!$A$1:$A$57 相同 ?
相同,則返回 TRUE;不相同則返回 FALSE;所以,它會返回 TRUE 、FALSE 組成的數組。(TRUE=1, FALSE=0)
ROW(來源!$A$1:$A$57) 返回每個資料所在的行號。

EXACT() 、ROW() 兩者相乘返回的結果,為某個行號與0的數組。
例如:C5 儲存格返回的結果是{0;0;0;0;7;0;0;0;0;0;0},然後 用MAX() 將這個行號數值(7)提取出來。


如果不使用輔助列,可以如此處理:
=VLOOKUP(MAX(EXACT(D2,$A$2:$A$9)*ROW($A$2:$A$9)),IF({1,0},ROW($A$2:$A$9),$B$2:$B$9),2,0)

網路資源:https://kknews.cc/zh-tw/news/e8x4mp4.html

沒有留言: