Excel INDEX MATCH当值可能在3列之一

我正在使用INDEX / MATCH来查找单个列中的值,并使用以下命令从不同列中返回值:

=INDEX(Sheet1!$A:$A,MATCH(A2,Sheet1!$B:$B,0)) 

这将search以查看A2与Sheet1列B中的值匹配,如果是,则将返回列A该行的值。

但是,正在search的值可能实际上在列BCD ,我希望能够在同一个查询中search这些值。

我希望下面的工作,但它不:

 =INDEX(Sheet1!$A:$A,MATCH(A2,Sheet1!$B:$D,0)) 

有没有办法做到这一点,没有IF语句? 我有一个使用IF语句处理3列的版本,但似乎应该有一个更简单的方法。

老实说有点复杂,但是像这样:

 =INDEX(Sheet1!$A:$A,MATCH(1,SIGN((A2=Sheet1!$B:$B)+(A2=Sheet1!$C:$C)+(A2=Sheet1!$D:$D)),0)) 

完成同样的事情,虽然它是一个数组公式,所以你必须使用CTRL + SHIFT + ENTER进入(也可以工作,如果该值显示不止一次,因为它只是检查> 0)

您可以使用SUMPRODUCT,尽pipe这要求在该范围内search值不超过一次:

=IF(COUNTIF(Sheet1!$B1:$D10,A2),INDEX(Sheet1!$A:$A,SUMPRODUCT((Sheet1!$B1:$D10=A2)*ROW(Sheet1!$B1:$D10))),"No Match")

如果search值在该范围内可能出现一次以上,那么解决scheme将取决于在确定返回时哪些应优先考虑。

请注意,使用数组处理函数(SUMPRODUCT)意味着您不build议使用整个列引用。 与例如COUNTIF(S)/ SUMIF(S)不同,这样的公式会计算传递给它们的所有单元格,无论技术上是否超出这些范围内最后使用的单元格。

对于最后一行的参考,应该select一个适当的低,尽pipe是足够的上限。 或者,您可以为您的数据创builddynamic范围,以便在数据展开/合同时自动调整,从而提供最佳效率。

问候

如果您只是从列A中返回数字值,则可以使用:

 =MAX(IF(A2=Sheet1!$B$2:$D$10,Sheet1!$A$2:$A$10)) 

CTRL + SHIFT + ENTERinput

如果相反,您是从列A返回一个文本值(或数字值),您可以使用:

 =INDEX(Sheet1!$A$2:$A$10,SMALL(IF(A2=Sheet1!$B$2:$D$10,ROW(Sheet1!$A$2:$A$10)-ROW($A$2)+1),1)) 

还需要用CTRL + SHIFT + ENTERinput

您可以根据需要更改范围。