XLOOKUP使用情境十五:最大值的查詢(各評比項目的榜首)

利用XLOOKUP查詢不同分類的最大值。

公司舉辦了員工作品設計的產品設計比賽,評比的項目共有「協調力」、「整合性」、「時效性」、「準確度」、「需求性」、「擴充力」、「視覺化」等七大項,參與的員工有15人,此次每一個評比項目的給分是從10分到50分不等,而當初評分時的規則便是每個人的分數都不會一樣,也就是同一個評比項目的分數不會重複,以確保同一評比項目不會有同分狀況,以利於同一評比項目肯定可以分出高下。而每位參與的員工姓名、評比項目與成績,建立的一份成資料清單,位於儲存格範圍A2:H17。我們想透過函數的撰寫,立即顯示出每一評比項目的狀元(最高分)是誰。

首先,我們先利用TRANSPOSE函數在儲存格J3裡輸入以下公式:

=TRANSPOSE(評比項目)

如此便可以建立一個縱向的評比項目名稱的清單陣列,接著就可以準備在儲存格K3裡輸入公式以顯示各評比項目最高分的員工姓名。

這個議題的解法觀念是:若只想找出「整合性」最高分者,則XLOOKUP函數的可寫成:

=XLOOKUP(MAX(整合性), 整合性, 員工姓名)

若只想找出「需求性」最高分者,則XLOOKUP函數的寫法則可改為:

=XLOOKUP(MAX(需求性), 需求性, 員工姓名)

這兩個XLOOKUP函數的寫法,其查找結果都可以傳回單一值(員工姓名)。此外,基於XLOOKUP函數也可以傳回整個陣列,若使用以下的XLOOKUP函數寫法,將可傳回某一評比項目的所有成績,這正是一個縱向結構的陣列,對此公式我們暫時稱之為A公式:

=XLOOKUP(某一評比項目名稱,評比項目,評比成績)

因此,在上述函數的外圍再加上一層MAX函數,便可以取得某一評比項目其所有成績裡的最高成績,假設對此公式我們暫稱為B公式:

=MAX(XLOOKUP(某一評比項目名稱,評比項目,評比成績))

那麼,若再度使用XLOOKUP函數,將上述B公式(某一評比項目的最高成績)的結果視為查詢值,再到A公式(某一評比項目之所有成績陣列)的結果陣列進行查找,並設定結果陣列為員工姓名陣列,那麼,該評比項目裡最高分的員工姓名不就呼之欲出了!

=XLOOKUP(B公式, A公式, 員工姓名)

我們可以在儲存格K3裡輸入完整且由多個XLOOKUP函數所巢串而成的冗長公式:

完成公式的建立後,即可看到「協調力」評比項目的最高分者為「陳艾珈」。接著,拖曳此公式儲存格右下方的小黑點,即填滿控點(Fill Handle),往下拖曳以完成整個欄位的公式運算,每一項評比項目的榜首就一覽無遺了!

另一種解法可以不需要麼多層的XLOOKUP函數,但是一定要確保相關資料範圍名稱都要確實命名,因此,可以透過INDIRECT函數的參照特性,間接順利參照到字串名稱所代表的資料範圍。例如:在儲存格K3裡輸入以下函數:

=XLOOKUP(MAX(INDIRECT(J3)), INDIRECT(J29), 員工姓名)

完成後再藉由拖曳填滿控點的操作,完成每一項評比項目之最高分名單。

(本文實作範例下載)