2014-09-10 67 views
7

我一直在尋找一種方法來在Excel中使用INDEX MATCH來返回數組中絕對最接近的數字而不用重新組織我的數據(因爲MATCH要求lookup_array按降序排列找到大於lookup_value的最接近值,但按升序排列,找到最小值小於lookup_value)。使用INDEX MATCH找到絕對最接近的值

我在this post找到了答案。 XOR LX的溶液:

= INDEX(B4:B10,MATCH(TRUE,INDEX(ABS(A4:A10-B1)= MIN(INDEX(ABS(A4:A10-B1),,)),, ),0))

對我來說很完美,但我不知道爲什麼。我可以最合理的,但我無法弄清楚這部分

INDEX(ABS(A4:A10-B1)= MIN(INDEX(ABS(A4:A10-B1),,))

任何人能解釋這部分?我不喜歡使用它眩目,知道它會在未來是有用的。

回答

8

我想這是有道理的,我來解釋它,然後!

實際上,並沒有幫助我採用的是一種技術,旨在規避必須輸入一個公式作爲數組公式,即與CSE。雖然這可能被某些帳戶視爲加分,但我認爲我在這裏使用它是錯誤的,並且可能不會再這樣做。

該技術涉及在公式中的適當位置插入額外的INDEX函數。這會強制其他函數,這些函數在沒有數組輸入的情況下通常只作用於傳遞給它們的任何數組的第一個元素,而是操作該數組中的所有元素。但是,在我看來,插入單個INDEX函數以避免CSE是完全正常的,我認爲當它達到了使用兩個或三個(或更多)這樣的強制時,那麼你應該重新考慮它是否值得所有(我已經做過的少數測試表明,在許多情況下,性能實際上是更差 off在非數組,INDEX-heavy版本中比等效的CSE建立)。此外,使用數組公式是需要鼓勵的,而不是要避免的。

不好意思,但實際上這很實際,因爲如果我給給你數組版本,那麼你可能不會再回來尋找解釋,因爲那個版本看起來像這樣:

= INDEX(B4:B10,MATCH(TRUE,ABS(A4:A10-B1)= MIN(ABS(A4:A10-B1)),0))

這是客觀容易得多語法到比其他版本更理解。

讓我知道這是否有幫助和/或您仍然希望我解決任何解決方案的細分問題,我很樂意去做。

你也可以找到自己感興趣的(我希望我沒有張貼這些違反任何本網站的規則)以下鏈接:

https://excelxor.com/2014/09/01/index-an-alternative-to-array-cse-formulas https://excelxor.com/2014/08/18/index-returning-entire-rowscolumns

問候

+0

A-HA !是的,現在我明白了,太聰明瞭!作爲一個很少需要處理足夠大的數據集以使得數組公式實用(或者INDEX)的人,我承認,我避免了這些。感謝參考資料,現在我可以理解sans-CSE方法了!我一定會保留這些書籤。 – rgj 2014-09-10 19:11:52

+0

好!我很高興。而且你的歡迎!附: 「Sans-CSE」現在也在我的詞彙表中,以備將來使用:-) – 2014-09-10 19:21:12

+0

您的回答很好地解釋了這一點,兩個鏈接都無法正常工作。 – tillmas 2017-09-17 14:46:56