XLOOKUP使用情境十八:符合OR邏輯的多重條件查詢

使用XLOOKUP函數運用在AND與OR的多重邏輯查詢。

我們可以延續前一個情境範例(符合AND邏輯的多重條件查詢)所學習到的邏輯運算原理,透過加法的算術運算,便可以針對多重條件判斷進行OR(或)邏輯運算,以查找所要的資料記錄。例如此範例的資料來源是公司的產品製作排程清單,記錄著各產品的代碼、語言包、排程、負責人與負責人其年資等五項資料欄位。由於公司的多項產品都有需求不一的語言包必須製作,有些產品僅需要製作日文語系的語言包,有些產品則會有繁體中文與德文兩種語言包的需求,甚至還有些產品可需要三種不同語言的語言包。此外,每個產品也都訂定了專案製作排程,分別有A、B、C、D、E、F以及特速件的X等七種排程等級。若要查找出製作排程為C等級而語言包是屬於亞洲語系的產品資記錄,那麼這個XLOOKUP函數的查找公式要如何建立呢?

此範例中,在語言包的查詢上便是屬於重條件判斷的OR(或)邏輯運算,因為我們想要查找的資料是亞洲語系的語言包,而根據資料來源可檢視語言包資料欄位裡的內容,「繁中」、「日文」以及「韓文」這三個語系都是屬於亞洲語系,因此,以陣列的角度去看,整個「語言包」欄位裡的每一個儲存格內容,皆須分別與「繁中」、「日文」以及「韓文」等三個字串逐一進行等於「=」的關係比對,以分別傳回三個判別結果陣列,也就是三個充滿True或False的陣列。

如果再對這三個結果陣列進行數學算式的加法運算,也就是OR邏輯運算,那麼,三個陣列裡的各個元素相對應的OR邏輯算運,其運算結果便是一個充滿了0與1的結果陣列。另外若是指定要查詢出「A」排程的商品,也就是排程欄位的是內容是否為A判斷式:

=(排程="A")

則此比對查詢結果也會是一個充滿了True或False的結果陣列。而前後這兩個結果陣列,若要進行是否同時成立的判斷,便是屬於AND邏輯的運算,這也就我們此次的查詢需求:

因此,整個算式的邏輯運算可以下圖意會:

如此,此例的查詢需求便是根據上述公式的最終查詢結果陣列裡找尋「1」的資料,並擷取傳回陣列(翻譯排程)裡其相對應的資料紀錄。依此結論,此查詢函數可歸納為:

在此實作範例的介面設計上,您可以在儲存格J2裡輸入所要查詢的排程,而查找此排程亞州語系語言包資料記錄的公式,可以撰寫在I5儲存格裡。試試在儲存格J2裡輸入不同的排程,看看XLOOKUP的查詢威力吧!

(本文實作範例下載)