XMATCH的實例應用:資料查找模式的綜合應用(5/5)

使用XMATCH函數,查找最近(最新)的資料。

以下的範例是學員票選最喜歡的電影資料清單,記錄了每一部電影年度、主要演員、片名、票房以及首映日期等資訊,並以首映日期從最舊到最新排序。

在此我們想要建立一個可輸入演員姓名(儲存格K4),並在這份電影資料清單中找出其近期演出的電影。雖說這個需求可以使用XLOOKUP來完成,但是在此要介紹的是XMATCH的應用,所以,就以XMATCH還解決。例如:在儲存格K5輸入以下函數:

=XMATCH(K4,演員,0,-1)

上述函數的第一個參數lookup_value參數是儲存格K4的內容(演員姓名),第二個參數lookup_array是演員資料欄位,第三個參match_mode數設定為「0」代表要進行完全符合的比對,最後一個參數search_mode選擇「-1」表示要從演員資料欄位裡的最後一筆資料開始進行搜尋至第一筆資料。因為此資料清單裡的內容已經根據首映日期從最舊排列到最新了,因此,此刻從底部開始搜尋且尋獲資料的話,想必就是最近(最新)的資料了。

此例我們輸入的查詢值是「強尼·戴普」,查詢後的傳回結果是「17」,即代表在「演員」資料欄位裡,最後一筆出現「強尼·戴普」的資料正位於「演員」資料欄位的第17個索引位置。

由於XMATCH函數傳回的結果是查詢陣列的索引值,因此,此數值可以做為INDEX函數索引值參數,至指定的欄位擷取所要的欄位內容。例如:

=INDEX(名片,K5)

便可以取得「強尼·戴普」在這份資料清單中最近(最新)的一部電影為「怪獸與葛林戴華德的罪行」。

如果我們想要建立一個查尋介面是輸入某一個首映日期,即便記不得確切的日期也沒關係,只要輸入一個大概的日期,就讓XMATCH函數幫我們來查詢最接近該輸入日期,但又不會超過那一天的電影作品與其相關資訊。如下圖所示的範例,儲存格K8是我們要輸入的查詢日期。譬如:此例我們輸入了「2017/6/8」,然後,在儲存格K8輸入以下函數:

=XMATCH(K8,首映日期,-1,2)

上述函數的第一個參數lookup_value參數是儲存格K8的內容(要查詢的日期),第二個參數lookup_array是首映日期資料欄位,第三個參match_mode數設定為「-1」代表要進行完全符合或者下一個較小項目的比對,最後一個參數search_mode選擇「2」表示搜尋的模式要採用二進位搜尋(遞增排序)。

剛剛輸入的日期是「2017/6/8」,而資料清單中首映日期欄位裡沒有這一天,而最接近這一天但又沒有超過這一天的日期是「2017/5/24」,因此,上述的XMATCH函數將傳回「2017/5/24」在放映日期欄位裡的索引位置「15」。接著,我們再將這個結果,做為多個INDEX函數的索引值參數,便可傳回當天的電影片名、首映日期、票房與演員等欄位的相對應內容。例如:

  • =INDEX(片名,K9)
  • =INDEX(首映日,K9)
  • =INDEX(票房_美金_億,K9)
  • =INDEX(演員,K9)

(文章內容實作範例下載)