2015-12-28 94 views
0

我試過下面的公式與if語句的索引匹配,但沒有得到正確的答案。我在哪裏犯錯?與多個計算條件執行索引匹配

=IF(INDEX(AE$3:AE$2000,MATCH(MIN(ABS(AE$3:AE$2000-$AS3)),ABS(AE$3:AE$2000-$AS3),0)),AD$3:AD$2000=$AN3) 

=IF(AD$3:AD$2000=$AN3,INDEX(AE$3:AE$2000,MATCH(MIN(ABS(AE$3:AE$2000-$AS3)),ABS(AE$3:AE$2000-$AS3),0)),IF(AD$3:AD$2000=$BN3,INDEX(AE$3:AE$2000,MATCH(MIN(ABS(AE$3:AE$2000-$AS3)),ABS(AE$3:AE$2000-$AS3),0)),"")) 

=--(AD$3:AD$2000=$AN3)INDEX(AE$3:AE$2000,MATCH(MIN(ABS(AE$3:AE$2000-$AS3)),ABS(AE$3:AE$2000-$AS3),0)) 

=INDEX(AE$3:AE$2000,MATCH(MIN(ABS(AE$3:AE$2000-$AS3)),ABS(AE$3:AE$2000-$AS3),IF(AD$3:AD$2000=$AN3),0)) 

=INDEX(AE$3:AE$2000,MATCH(SMALL(IF(AD$3:AD$2000=$AN3,ABS(AE$3:AE$2000-$AS3)),1),IF(AD$3:AD$2000=$AN3,ABS(AE$3:AE$2000-$AS3),0)) 
+4

如果您顯示一些數據並確切說明您正在嘗試執行的操作可能會更容易。 –

+0

斯科特.......我想從給定的表格中找出最接近的值或數字。爲此,我可以使用= INDEX(AE $ 3:AE $ 2000,MATCH(MIN(ABS(AE $ 3:AE $ 2000- $ AS3)),ABS(AE $ 3:AE $ 2000- $ AS3),0)) (I我在「添加評論」中發佈了上面的代碼,因此無法理解如何在{}中發佈) 但同列中有一堆表。所以最接近的值將會超過一個,因此需要使用IF函數。因此,如果$ AN3(稱爲「John」)在AD $ 3:AD $ 2000列中有表格。首先在AD列中查找或搜索「John」,並從該表中索引匹配最近值。 –

回答

1

試試這個數組¹公式。

=INDEX(AE$3:AE$2000, AGGREGATE(15, 6, ROW($1:$1998)/((MIN(ABS(TRANSPOSE(AE$3:AE$2000)-$AS3))=ABS(AE$3:AE$2000-$AS3))*(AD$3:AD$2000=$AN3)), 1)) 

AS3


¹數組公式需要與按Ctrl ++Enter↵完成。一旦正確輸入第一個單元格,就可以像其他公式一樣向下或向右填充或複製它們。嘗試並將您的全列引用減少到更接近表示實際數據範圍的範圍。數組公式以對數形式計算週期,所以最好將參考範圍縮小到最小。有關更多信息,請參閱Guidelines and examples of array formulas

+0

Jeeped .....上面的代碼工作雖然,但是當我拖下來,我有一些單元格之間的錯誤#NUM。 –

+0

您需要仔細閱讀公式並添加/刪除** $ **符號,以便將行鎖定在希望它們鎖定的位置(即絕對引用)和解鎖(即相對引用)的位置,以便您希望它們前進到新的位置行應該在哪裏進展。 – Jeeped