尋找對應變數到列表中大於查找值的第一個值

尋找對應變數到列表中大於查找值的第一個值

請參閱圖片以了解問題描述和範例。

我想傳回與第一個大於我的查找值/數字的數字對應的字母。

我一直在嘗試使用索引匹配來解決這個問題,但似乎只有在查找值與其比較的數字之間存在精確匹配時才有效。

這是我認為可行但行不通的公式: =+INDEX(A3:F3,MATCH(A6,A2:F2,-1))

在此輸入影像描述

答案1

正如我在評論中提供的連結中所討論的,MATCH(,,-1)要求資料按降序排序,否則將返回並出錯。

要獲得您字面意思(“第一個大於我的查找值/數字的數字”),您可以使用:

=INDEX(A3:F3,MATCH(A6,A2:F2,1)+1)

獲得第一個數字相等的匹配項或者大於您的查找值,您可以使用:

=INDEX(A3:F3,IFERROR(MATCH(A6,A2:F2,0)-1,MATCH(A6,A2:F2,1))+1)

答案2

在這裡可以做很多事情。對於一些更“離譜”但更短的公式,所以......可以使用:

=INDEX(FILTER(A2:F3,A2:F2>=A6),2,1)

FILTER()以這種方式設定以傳回結果數組的第一列中所需的字母(所述數組剛剛在內部使用)。因此,無論什麼使函數INDEX()易於填寫,人們都會準確地知道所需的字母是「第 2 行,第 1 列」。

然後以人們更習慣的方式處理“大於”或“等於或大於”,即在 中的條件中使用“">”或“">=” FILTER()

它確實解決了查找行未排序(如無序)的情況,因為FILTER()將在不詢問的情況下對其結果數組進行排序。因此,無論查找行的條件如何,都會返回正確的答案。

如果沒有FILTER()可用的,可以使用以下作為數組來MATCH()查找並提供INDEX()其值:

=MIN(IFERROR((A2:F2)/(A2:F2>=A6),MAX(A2:F2)))

幾乎完全是老式的,IF(ISERROR(...如果沒有IFERROR()可用的,可以替代。這些值除以 ">= 測試中的 1 或 0,因此會產生查找行中的值,或會出現錯誤,但在這些情況下,MAX()會填入查找行中的最高值,因此不會出現錯誤幹擾尋找所需的值。如果情況需要,可以在MAX()結果中新增“+1”,以便所有小於的值都超過“自然”條目。

當然,現在XLOOKUP()會做得很好:

=XLOOKUP(A6,A2:F2,A3:F3,,1)

簡短、簡單、清晰。不需要任何技巧。

F Bert很高興。只是將這些內容發佈給任何需要答案而不局限於問題的唯一因素的研究人員。)

相關內容