XLOOKUP使用情境七:下一個較小或較大的查詢

商品要裝箱,多少的商品數量要用多大的紙箱?就讓XLOOKUP進行查找唄!

商品要進行裝箱作業時,必須選擇可以容納的紙箱,此時將依據商品數量的多寡來決定紙箱的大小。例如:最小的S紙箱對多只能裝下5個商品;M規格的紙張最多只能容納10個商品;依此類推,對大尺寸的XX紙張,容量上限是90個商品,因此,事先製作出了數量由小到由大的級距表,呈現每一種只紙張的最大容納數量與紙箱單價,如下圖所示名為表格3的資料表格。如果將儲存格F20視為查詢值,輸入了商品數量,想要查詢此數量應該適用哪一種規格的紙箱,則鍵入以下VLOOKUP函數:

=VLOOKUP(F20,$A$21:$C$26,2,TRUE)

此時所得到的結果是M(8"x10")的紙張,好像不太正確耶!這是起因於VLOOKUP函數其大約符合的比對,指的是「完全相符」或「下一個較小」的項目才算找到資料。以此例為例,輸入的查詢值是12,而此值與資料表3數量級距欄位裡由小到大的六個數值5、10、25、40、60、90相比並不相等,但是逐一比對起來應是介於10與25之間,而取其「下一個較小」的項目才算找到資料,因此,查詢值12便傳回10這個級距裡的資訊,再依據VLOOKUP函數的特性,由左至右的第2欄內容便是「M(8"x10")」。所以,依據VLOOKUP函數語法的運作,傳回的結果沒錯,但是,意義上並不是我們想要的,因為是數量12個商品,肯定無法放在只能容量10個數量的紙箱裡,因此,以此例而言,容納25個數量的紙箱才是正確的選擇啊!

然而,VLOOKUP函數的查找比對模式僅提供「完全相符」或「下一個較小」的項目才算找到資料的比對,並沒有「下一個較大」的項目才算找到資料的比對模式,因此,這又得靠XLOOKUP函數來幫忙囉!XLOOKUP函數裡的第5個參數 - match_mode 便是設定資料查找的比對模式,總共有0、-1、1、2等四種選項:

XLOOKUP的第5個參數Search_Mode意義如下:

參數值意義
0(預設值)代表要查找完全相符的資料項目。
-1代表要查找完全相符或者下一個較小的資料項目。
1代表要查找完全相符或者下一個較大的資料項目。
2表示要查找符合萬用字元(*或?)比對的資料項目。

所以,此裝箱作業的紙張大小查詢範例,就很適合將此match_mode 參數設定為1,建立如下的XLOOKUP函數:

=XLOOKUP(F20,表格3[數量],表格3[紙箱規格],,1)

可查找適當的紙箱大小,找出數量12應選擇L(10"x12")大小的紙張。

=XLOOKUP(F20,表格3[數量],表格3[費用],,1)

可查找適當的紙箱費用,找出數量12的紙箱大小其費用為150元。

(本文實作範例下載)