1
最大值我有一個表中的Excel工作表是這樣的:獲取從查找表
Index Threshold
1 0
2 10
3 20
...
然後我有值的另一個表:
Values
5
11
14
22
我要的是實現一個公式將「值」映射到可能不超過「閾值」的最大「索引」,例如:
Values Threshold Index
5 -> 0 -> 1
11 -> 10 -> 2
14 -> 10 -> 2
22 -> 20 -> 3
我認爲我可以實現一個IF()
的二叉樹,其代價爲log(n)
,但是它非常繁瑣且難以處理。例如(T*
的閾值,V*
是價值觀和I*
是指數):
IF(V1 < T3;IF(V1 < T2;I1;I2);IF(V1 < T4;I3;I4))
這是一個平衡的IF()
樹,如:
T3
/ \
T2 T4
/\ /\
I1 I2 I3 I4
有沒有更好的(更可用)的方式來實現這一?
這只是我正在工作的實際工作表的要點。真實的數據是二維的,分佈在很多頁面上,並且遠遠更大(數百個閾值和數千個值)。
特別是複製&粘貼很難處理(創建,測試和維護)。
編輯:實際的解決方案
所以,這就是問題的一些研究之後,我想表明我工作的解決方案。 MATCH()
函數是基本的,但還不夠。
首先,閾值並不表示的最大允許值,而是的最小要求值。因此該標題具有誤導性。我所要做的是:
- 反轉閾值範圍;
- 使用
MATCH()
與-1
比較類型。
爲了逆轉我用這個公式的範圍內,佔細胞在F2:F102
範圍:
INDEX(C$2:C$102;COUNTA(C:C)+1-ROW())
爲了匹配我使用:
MATCH(D2;F$2:F$102;-1)
這最後一個匹配是不INDEX()
因爲返回抵消已經是我需要的。
感謝Scott Craner讓我走上正軌!
很不錯的!我只是在一個較小的數據集上測試它,通常它可以工作,但有索引錯誤。所有值都是整數,錯誤只出現在更高的值中。對於'T = 5,V = 4',它給了我以前的索引'I = 4',而不是正確的'I = 5'。任何想法如何可以?我不能只添加'+ 1',因爲對於較低的值('V <4'),這是正確的。手動調整它會使下半部分變成錯誤:( – pid
我不得不離開,並且不會回來幾個小時,我不理解。如果我在E3中放置了'10',它會給我2,如果它是1 ? –
不,2是正確的,我正在處理的是更復雜的數據,但是我可以通過使用中間校正公式來管理它,'MATCH()'是我需要的,所以這個問題被接受並完成了!非常感謝你,不介意以前的評論:) – pid