部分string匹配转换表

A列中有一个很长的string。 我需要找出B列中的50个单词(每行1个字)中的任何一个是否在列A的每一行中。之后,从列BI中匹配的任何单词都需要列C中的相应编号。

我尝试了不同的VLookups,Match和Index公式,但没有运气。 如果我需要澄清问题,请让我知道。

编辑:这是一个例子:

尝试这样的事情:

F2添加此公式并向下拖动:

=LOOKUP(2^50,SEARCH($C$2:$C$5,A2),$D$2:$D$5)

不是一个数组公式。

相同的概念,但使用数组…

 Public Function match_keyword2(CellVar As Range) 'initialize at zero match_keyword2 = 0 Dim keyword_ARRAY(1 To 3) As String keyword_ARRAY(1) = "blue" keyword_ARRAY(2) = "green" keyword_ARRAY(3) = "red" For i = LBound(keyword_ARRAY) To UBound(keyword_ARRAY) If InStr(CellVar.Value, keyword_ARRAY(i)) > 0 Then match_keyword2 = i Exit For End If Next i End Function 

然后修改代码以包含您的关键字列表。

你可以尝试做一个自定义的公式。 将这个模块添加到你的excel文件中:

 Public Function match_keyword(CellVar As Range) 'Insert a blank column 'add the excel function "=match_keyword(A1)" 'in it, you will see a number which represents the first matching keyword If InStr(CellVar.Value, "blue") > 0 Then match_keyword = 1 ElseIf InStr(CellVar.Value, "green") > 0 Then match_keyword = 2 ElseIf InStr(CellVar.Value, "red") > 0 Then match_keyword = 3 Else 'no match found match_keyword = 0 End If End Function 

修改代码以包含所有关键字及其相应的编号。

你可以尝试下面的公式:
=INDEX(D$2:D$5,IF(SUM(IFERROR(SEARCH(C$2:C$5,A2),0))>0,MATCH(MAX(IFERROR(SEARCH(C$2:C$5,A2),0)),IFERROR(SEARCH(C$2:C$5,A2),0),0),NA()))

通过按Ctrl + Shift + EnterF2input数组公式。

结果: 在这里输入图像说明