XLOOKUP使用情境十六:重新調整查詢輸出欄位的順序

運用XLOOKUP函數,客製化查詢結果的輸出欄位順序。

原始資料各欄位資料由左至右順序,常常不是你我能決定的,可以,再原始資料裡搜尋所需的內容後,要如何顯示哪些資料欄位?以及如何呈現各資料欄位的順序,透過XLOOKUP將是簡單又容易喔!以下實作範例的原始資料是一張包含六項資料欄位的產品基本規與庫存清單,相關欄位名稱所對應的儲存格範圍皆描述如下圖所示。各欄位由左至右的順序分別為產品「寬度」、「高度」、「售價」、「庫存量」、「材質」與「代碼」。

如果我們在儲存格L2裡輸入想要查詢的商品代,並企圖查詢出該商品代馬的整筆資料記錄,則XLOOKUP是最好用的函數了。例如:在儲存格J5裡建立以下函數:

=XLOOKUP(L2,代碼,DATA)

基於動態陣列參照的特性,所要查詢的商品資料記錄會以陣列的形式呈現,例如:M723商品代碼所對應的整筆資料記錄,立刻顯示在J5:O5裡。若在儲存格L2裡輸入另一個商品代碼,譬如:X948,則此代碼的整筆商品資料記錄,也立刻查詢出來並顯示在在J5:O5中。但無論如何,查詢輸出結果的各資料欄位順序,也正同原始資料般的順序,由左至右分別為「寬度」、「高度」、「售價」、「庫存量」、「材質」與「代碼」。

但是,如果我們期望查詢結果的欄位順序要與原始資料不同,譬如:我們希望查詢結果的欄位順序由左而右是「代碼」、「寬度」、「高度」、「材質」、「庫存量」及「售價」,那麼,剛剛的XLOOKUP函數也做得到嗎?要如何修改呢?沒問題的!不過,首先請你先將期望的欄位順利之欄位名稱,一字不漏的建立在工作表示,如下圖所示的儲存格範圍J4:O4,這個範圍也命名為「輸出欄」。

接著,在儲存格J5輸入以下的XLOOKUP函數:

=XLOOKUP(輸出欄,原始欄,XLOOKUP(L2,代碼,DATA))

這是兩層級的巢串式的XLOOKUP函數寫法,內層的XLOOKUP函數即是前述輸入商品代碼而傳回整筆資料記錄的結果陣列,此結果陣列的欄位順序與原始資料記錄的欄位順序相同,將此結果陣列視為外層XLOOKUP函數的第三個參數,而此外層XLOOKUP函數的第一參數設定為「輸出欄」範圍、第二個參數設定為「原始欄」範圍,如此,「輸出欄」範圍裡的每一個儲存格內容將與「原始欄」範圍裡的內容逐一比對,並傳回第三個參數陣列裡的相對應內容。由於第一參數「輸出欄」範圍是多個儲存格內容,因此傳回的查詢結果也會是相同儲存格數量的陣列,也正是我們想要的的查詢結果陣列。

因此,當儲存格L2裡輸入任一個已存在的商品代碼後,其整筆資料記錄的查詢輸出,正以我們所設計的欄位順序呈現。爾後即便有其他不同欄位順序的輸出需求,頂多也只是調整一下儲存格範圍J4:O4「輸出欄」裡的文字內容即可,完全不需要再修改XLOOKUP查詢函數喔!

(本文實作範例下載)