Excel公式仅使用另一个工作表上列中的第一个值

在B2我有文本search内,在C2我有这个公式search工作表上的单词称为“关键字”匹配。

{= IF(B2="","", IF(ISNUMBER(SEARCH(keywords!$B$2:$B$5,B2)),"Fruit", IF(ISNUMBER(SEARCH(keywords!$C$2:$C$5,B2)),"Nature", IF(ISNUMBER(SEARCH(keywords!$D$2:$D$5,B2)),"Vehicle", "no match")))) 

该公式仅使用关键字工作表上的B2,C2,D2中的第一个关键字,而不是通过B5,C5,D5。 什么是正确的公式?

我知道如果find多于一个的比赛结果将是最后的满意的陈述。 请帮忙!

关键字

对于非CSE数组,请使用sumproduct:

 = IF(B2="","", IF(SUMPRODUCT(ISNUMBER(SEARCH(keywords!B$2:B$5,$B2))*1)>0,"Fruit", IF(SUMPRODUCT(ISNUMBER(SEARCH(keywords!C$2:C$5,$B2))*1)>0,"Nature", IF(SUMPRODUCT(ISNUMBER(SEARCH(keywords!D$2:D$5,$B2))*1)>0,"Vehicle", "no match")))) 

对于使用关键字表中的标题行作为返回值的略短一些的公式,所以不需要对这些值进行硬编码。 用这个:

 =INDEX(keywords!$B$1:$D$1,AGGREGATE(15,6,(COLUMN(keywords!$B$2:$D$5)-COLUMN(keywords!$B$2)+1)/(ISNUMBER(SEARCH(keywords!$B$2:$D$5,B2))),1)) 

范围可以扩展到将来允许更多的行或列,而不需要添加更多的IF语句。

在这里输入图像说明

尝试:

 { = IF(B2="","", IF(MAX(IFERROR(SEARCH(keywords!$B$2:$B$5,B2),0))>0,"Fruit", IF(MAX(IFERROR(SEARCH(keywords!$C$2:$C$5,B2),0))>0,"Nature", IF(MAX(IFERROR(SEARCH(keywords!$D$2:$D$5,B2),0))>0,"Vehicle", "no match")))) } 

问题是,公式中的search正在寻找一个单一的值在指定的文本string内进行search,因此,当您select范围$B$2:$B$5它会select单元格区域的第一个单元格中的值。

而不是使用SEARCHfunction使用匹配types为0 MATCH函数进行精确匹配。 注意:这不需要是一个数组公式。 例:

=IF(B2="","",IF(ISNUMBER(MATCH(B2,keywords!$B$2:$B$5,0)),"Fruit",IF(ISNUMBER(MATCH(B2,keywords!$C$2:$C$5,0)),"Nature",IF(ISNUMBER(MATCH(B2,keywords!$D$2:$D$5,0)),"Vehicle","no match"))))

另外你的陈述“如果发现不止一场比赛,我理解结果将是最后一个满意的陈述,请帮助! 你可能已经意味着第一个满意而不是最后一个; 这将是正确的。