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

Excel INDEX MATCH when value may be in one of 3 columns

我正在使用 INDEX/MATCH 在单个列中查找值,并使用 return 来自不同列的值:

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

这将搜索 A2 是否与 Sheet1 列 B 中的值匹配,如果匹配,则 return 将搜索 A 列中该行的值。

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

我希望以下内容会起作用,但它不起作用:

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

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

您可以使用 SUMPRODUCT,但这要求搜索值在以下范围内出现不超过一次:

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

如果搜索值可以在范围内多次出现,则解决方案将取决于在确定 return 时应优先考虑哪些值。

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

应该为结束行参考选择一个适当低但足够的上限。或者,您可以为数据创建动态范围,这样它们会根据该数据自动调整 expands/contracts,从而提供最佳效率。

此致

老实说有点费解,但类似于:

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

完成同样的事情,尽管它是一个数组公式,因此您必须使用 CTRL+SHIFT+ENTER 进行输入(如果该值出现不止一次也有效,因为它实际上只是检查 >0)

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

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

使用CTRL+SHIFT+ENTER输入。

如果您要从 A 列返回文本值(或数字值),则可以使用:

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

还需要用CTRL + SHIFT + ENTER输入。

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