2016-08-05 39 views
0

在B2我有文本搜索范围内,在C2我有这个公式来搜索工作表上的单词称为“关键字”匹配。Excel公式只使用第一个值在另一个工作表的列

{= 
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。什么是正确的公式?

我知道如果找到多个匹配项,结果将是最后一条满意的声明。请帮忙!

formula

keywords

+0

档案在这里https://www.dropbox.com/s/3rspwnetpgttko2/keywords_lookup_test.xlsx?dl=0 –

+0

你的意思是开始B3的范围?当然B2会与B2相匹配。 –

+0

Hlookup?这是你正在寻找的功能吗? – Andreas

回答

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语句。

enter image description here

+0

斯科特,这很方便,所以如果你喜欢的话,不需要移动/控制/输入 –

+0

@ElGavino,看看我的编辑。我添加了第二个公式,该公式一次查看整个范围,并返回标题行而不是硬编码的单词。 –

+0

感谢较短的版本,但是当关键字的范围改变为仅包含C和D时,我得到#NUM!使用此错误 = INDEX(关键字!$ C $ 1:$ D $ 1,AGGREGATE(15,6,(COLUMN(关键字!$ C $ 2:$ D $ 6)-COLUMN(关键字!$ C $ 2)+1)/( ISNUMBER(SEARCH(关键字!$ C $ 2:$ D $ 6,B3))),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")))) } 
+0

蒂姆,这工作!谢谢!因为它从第一个关键字列中返回第一个匹配,而不是最后一个满足的语句,所以效果比我预期的要好。 –

0

的问题是,你的公式中搜索正在寻找一个单个值指定的文本字符串中搜索,因此当您选择范围$B$2:$B$5它选择在的第一个单元格的值细胞的范围。

而不是使用SEARCH函数使用MATCH功能与匹配类型0和完全匹配。注意:这不需要是数组公式。 例子:

=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"))))

而且你发言。“我明白了,结果将是最后一个满意的说法,如果超过一个找到匹配的请帮帮忙!”你可能意思是第一个满意而不是最后一个;这将是正确的。

+0

感谢这个版本,但在术语列中有多个单词时没有用。 –

相关问题