返回列表 上一主題 發帖

尋找欄位區間最大值的對應欄位名稱

=LOOKUP(,0/(MAX(A2:E2)=A2:E2),A$1:E$1)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 5# clio

=INDEX(A$1:E$1,,MATCH(,0/(A2:E2=MAX(A2:E2)),))
你的公式沒有錯誤,但需要用陣列公式輸入才能運行

陣列公式輸入步驟
選擇儲存格 - 將公式鍵入(或貼上)工具列編輯欄 - 注意!游標仍需停留於編輯欄 - 先按CTRL及SHIFT不放 - 再按ENTER三鍵方式輸入公式,成功的話原先公式外會有 {....} 大跨弧

若只有單列或單欄,公式可以改為下列方式。(很微小差異)
=INDEX(A$1:E$1,MATCH(,0/(A2:E2=MAX(A2:E2)),))

註:VLOOKUP、MATCH、LOOKUP都能忽略計算錯誤組數,利用這些特性公式設計時故意讓不要的產生 "計算錯誤",就能快速找到我們要的值。
例如:0/(A2:E2=MAX(A2:E2)) 為何要去除0,0/TRUE = 0;0/FALSE = #DIV/0! (錯誤值),
{#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,0} 第一組陣列只有一個0 其它為#DIV/0!,MATCH用0去找就很明確找到最後一個。
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 10# clio
一、由【LOOKUP(,0/(MAX(A2:E2)=A2:E2),A$1:E$1)】與【INDEX($A$1:$E$1,MATCH(MAX(A2:E2),A2:E2,))】,讓我想到把Match代入Lookup內,所以我寫了【LOOKUP(MAX(A2:E2),A2:E2,A$1:E$1)】,但是這個出來的結果不一定都是正確的,我又細讀了一下參數要求,發現array需要是遞增排序的,所以我無法用Lookup搭配Match的方法來取得,正確的答案,只能用【LOOKUP(,0/(MAX(A2:E2)=A2:E2),A$1:E$1)】 的方法對嗎?

獲得答案的方法很多種思路


二、我也在網路上看到一個有關於Lookup的說明是【LOOKUP(1,0/(MAX(A2:E2)=A2:E2),A$1:E$1)】,第一個參數1或是大於0的任何數字,是查到最後一個符合的資料,要是為0則是查到符合的資料,但是不一定是最後一個符合的,這樣說法是正確的嗎?那在公式中【LOOKUP(,0/(MAX(A2:E2)=A2:E2),A$1:E$1)】,沒有輸入指定值,是指大於0,還是0呢?


    LOOKUP(,0/(MAX(A2:E2)=A2:E2),A$1:E$1) 適用於陣列裡只有1個0情況,若陣列理有多個0時使用 LOOKUP(9,0/(MAX(A2:E2)=A2:E2),A$1:E$1) 找到最後一個0
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 9# clio


    感謝ML089的解說,我可以再請教一個問題嗎?
我要怎麼判斷何時要用陣列的公式輸入呢?因為像【LOOKUP(,0/(MAX(A2:E2)=A2:E2),A$1:E$1)】這個好像就不用,而【INDEX(A$1:E$1,MATCH(,0/(A2:E2=MAX(A2:E2)),))】這個就需要,我大約知道【0/(A2:E2=MAX(A2:E2)】這個就是陣列的運用,是以這個在公式內的第一層或是第二層來作判斷嗎?
還要麻煩ML089再解說一下,感謝您。

大部分需要陣列處理的公式需要陣列公式輸入,
陣列處理中有  IF、IFERROR 一定要使用陣列公式輸入
除 LOOKUP、MMULT、SUMPRODUCT 可以處理陣列外,其它公式大部分需要陣列公式

剛開始需要試試看一般公式輸入及陣列公式輸入兩種,久了就可以判斷,有時我也需要試一下才能確定
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題