A列中有一个长字符串。我需要找出B列中每个行中50个单词中的任何一个单词(每行1个单词)是否在A列中。在此之后,无论从B列中匹配哪个单词,我都需要C列中的相应数字。
我尝试过不同的VLookups,Match和Index公式,没有运气。如果我需要澄清问题,请告诉我。
编辑:以下是一个例子:
答案 0 :(得分:2)
尝试这样的事情:
在F2
中添加此公式并向下拖动:
=LOOKUP(2^50,SEARCH($C$2:$C$5,A2),$D$2:$D$5)
这是不数组公式。
答案 1 :(得分:0)
您可以尝试制作自定义公式。将此模块添加到您的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
修改代码以包含所有关键字及其对应的数字。
答案 2 :(得分:0)
相同的概念,但使用数组...
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
...然后修改代码以包含关键字列表。
答案 3 :(得分:0)
您可以尝试以下公式:
=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 + 输入,作为数组公式输入F2
。
<强>结果:强>