Excel INDEX MATCH当值可能在3列之一
我正在使用INDEX / MATCH来查找单个列中的值,并使用以下命令从不同列中返回值:
=INDEX(Sheet1!$A:$A,MATCH(A2,Sheet1!$B:$B,0))
这将search以查看A2
与Sheet1列B
中的值匹配,如果是,则将返回列A
该行的值。
但是,正在search的值可能实际上在列B
, C
或D
,我希望能够在同一个查询中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 。
您可以根据需要更改范围。