2015-12-28 59 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