在B2中我有要在其中搜索的文本,在C2中我有这个公式来搜索工作表上的单词" keywords"与之匹敌。
{=
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。什么是正确的公式?
我理解如果找到多个匹配项,结果将是最后满意的语句。请帮忙!
答案 0 :(得分:2)
对于非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语句。
答案 1 :(得分:0)
尝试:
{ =
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")))) }
答案 2 :(得分:0)
问题是您的公式中的搜索正在寻找在指定文本字符串中搜索的单个值,因此当您选择范围$B$2:$B$5
时,它会选择范围的第一个单元格中的值。细胞。
而不是使用SEARCH
函数使用匹配类型为MATCH
的{{1}}函数进行完全匹配。注意:这不需要是数组公式。
示例:
0
另外你的陈述"我理解如果找到多个匹配,结果将是最后满意的陈述。请帮忙!"你可能意味着第一个满意不是最后一个;这是正确的。