XLOOKUP使用情境十九:符合大小寫比對的查詢

大小寫必須完全符合的比對查詢。

不管是VLOOKUP或是XLOOKUP等查找函數,在比較英文的文字時是不區分大小寫的。例如:小寫的r與大寫的R被視為是相同的字元,若指定尋找「rs-10」時,也會找得到「Rs-10」。因此,如果在編碼上有需要區分大小寫,即便文字、編碼都一模一樣,但只要大小寫不同,有要區分是不同的資料記錄,那麼,在進行資料查照的比對時,可就得藉由EXACT函數來幫忙了!

EXACT函數正如其函數名稱的意思,會傳回確實無誤、完全沒有偏差的判別。此函數可以用來比較二個文字字串,並會區分大小寫,如果字串完全相同,會傳回 TRUE,否則會傳回 FALSE。其語法為:

=EXACT(字串1, 字串2)

在此實作範例中,我們想要查找的工程代碼輸入在範圍名稱為「輸入代碼」的儲存格裡,應該與「工程代碼」資料欄位的內容進行查詢比對,並傳回已命名為「工程資料」的結果陣列中之相對應的資料記錄。因此,對應XLOOKUP函數的語法規範,「輸入代碼」為lookup_value、「工程代碼」資料欄位為lookup_array,要傳回的資料位於「工程資料」陣列內,因此,此陣列為return_array。在輸入XLOOKUP函數後,便可以進行資料查詢。例如:「輸入代碼」為「Cp-11」後(注意C是大寫英文字母),查詢到的資料記錄是工程代碼為「cp-11」的資料記錄(注意此記錄的c是小寫英文字母)。

這就是查詢函數並未區分英文大小寫的查詢特性,如果要完全符合英文大小寫字才算找到資料的話,那就要強化查詢條件的比對囉!例如:原本的lookup_array參數僅是「工程資料」陣列,可以改成:

EXACT(輸入代碼,工程代碼)

也就是將想要查詢的工程代碼(即「輸入代碼」的內容),與工程資料欄位(即「工程資料」陣列)裡的每一個代碼,透過EXACT函數進行英文大小寫是否完全相同的比對,此EXACT函數的執行結果將會回傳一個充滿了TRUE或FALSE的陣列。

因此,改寫一下剛剛的XLOOKUP函數,到EXACT函數的結果陣列裡尋找TRUE便是搜尋到結果了!

 

迷思:關於Excel的雙負號運算

在一些較進階的Excel公式中,可能會遇到兩的減號的運算符號「--」,或稱為雙負號。第一次看到它的朋友,可能還會誤以為是要輸入減法或負數,但輸入了重複的減號,但其實不是!在Excel的公式編輯環境裡,真的有雙負號的運算,這種運算是專門用來將邏輯值,也就是TRUE或FALSE值,強制轉換為值數1或0的運算。例如:經常應用在建立條件判斷的關係判斷式,其結果不是TRUE就是FALSE,或者,執行諸如AND、OR、NOT等Excel邏輯函數時,其執行結果亦不是TRUE就是FALSE,如果您希望將TRUE值或FALSE值轉換成1或0,只要進行雙負號運算即可。

所以,前例的EXACT函數的結果是一個充滿了TRUE與FALES的陣列,若想要以0或1來呈現,便可以進行雙負號運算。那麼,在XLOOKUP函數的資料查詢上,就不用尋找TRUE值,而是尋找1值了。

(本文實作範例下載)