在多列中搜索另一列中包含的文本,并返回一个值

时间:2020-02-10 21:29:57

标签: excel excel-formula

我很抱歉这是一个愚蠢的问题,还是以前曾被问过,但我进行了全面搜索,但没有找到类似的问题/解决方案。我需要在两个可能的列(A和B)中查找另一列(E)中包含的文本。如果在E列中找到A或B列中包含的文本,则我需要C列中的值才能出现在F列中。

A和B列中的文本与E列中的文本不同(如果是的话,我不会问这个问题)。 B列中可能有也可能没有数据(不确定是否会增加任何复杂性,只是为了清楚起见)。

我尝试了INDEX(MATCH和ISNUMBER(SEARCH等)的各种组合,但无济于事。我很确定有一个简单的解决方案。任何帮助将不胜感激!

![enter image description here

2 个答案:

答案 0 :(得分:1)

您可以使用以下数组公式:

{=INDEX(F$2:$F$6,MATCH(1,--(MMULT(--ISNUMBER(SEARCH(IF(ISBLANK(B2),A2,A2:B2),$E$2:$E$6)),TRANSPOSE(COLUMN(IF(ISBLANK(B2),A2,A2:B2))^0))>0),0))}

ctrl + shift + enter确认编辑后的数组公式

enter image description here

编辑:

反向搜索-从C列到F列。也是一个数组公式。

{=INDEX($C$2:$C$9,MATCH(1,--(MMULT(--ISNUMBER(SEARCH(IF(ISBLANK($A$2:$B$9), $A$2:$B$9 & "#",$A$2:$B$9),E2)),TRANSPOSE(COLUMN($A$1:$B$1)^0))>0),0))}

在表达式$A$2:$B$9 & "#"中代替#,您可以指定搜索文本中未使用的任何字符

enter image description here

答案 1 :(得分:0)

不确定是否有更简单的方法,但是通过一些验证,您可以轻松地提出类似的信息

=IF(OR(IF(A3<>"",ISNUMBER(SEARCH(A3,E3)),FALSE),IF(B3<>"",ISNUMBER(SEARCH(B3,E3)),FALSE)),C3,F3)

它验证A3和B3都不为空(<>“”,...,FALSE),如果是,则返回false。 然后对A3和B3进行两次相同的验证;搜索单元格E3中是否包含该单元格。 如果以上两个条件中的任何一个为TRUE,则整个IF为true,并且它将根据需要返回C3。 在没有找到字符串的情况下,您没有提到所需的内容,因此在我的示例中,它返回F3中的值(但是您可以用任何值替换它)。

希望有帮助!