从Excel中的string数组中查找string数组中的string

在工作簿中有两个Excel工作表。

我在一张表中有参考表。 我需要find某个string是否存在于单元格中(有一个句子),然后在引用表中查找该string的值并写入。

这就是我想要做的:( Sheet 1是操作页; Sheet 2是参考页)

 VLOOKUP(FIND{"compare","contrast","x",..},from the sheet 1 column 1),if string exists,the value against that string in sheet 2 column 2 written in sheet 2 column 2) {"compare","contrast"} are all words in sheet 1 column 1 

我想比较Sheet 2, Column A中的任何string是否与Sheet 2, Column A中的string(在句子或string数​​组中)匹配。 然后,如果它们匹配,则应该在Sheet 1, Column B生成相对于Sheet 2, Column 2string的值。

你能指导我如何写这个macros吗?

更新:

这是function。

它需要2个参数:1st是要search的单元格(表1,A1),其次是组成参考表的列(表2,A:B)。 它将采用表2 A中的所有术语,并创build一个varriant数组术语表,其中A列为键,B为值。 如果它find单元格中的一个string,它会把它放在一个叫做result的新string中。 作为个人select,我将glossay设置为Static,以便在一次运行多个单元格的情况下运行得更快,但如果您愿意,可以将其更改为Dim。

所以对于A1,你会写:

 =FindString(A1,Sheet2!A:B) 

这里的代码,请试试看,我希望它可以帮助,或者至less给你一个良好的开始。

 Function FindString(ByVal text As String, _ ByVal term_list As range) As String Dim result As String Dim i As Long Static glossary As Variant glossary = range(term_list.Cells(1, 1).End(xlDown), term_list.Cells(1, 2)) For i = 1 To UBound(glossary) If InStr(text, glossary(i, 1)) <> 0 Then result = (glossary(i, 1) & " = ") & (glossary(i, 2) & vbLf) & result End If Next If Len(result) <> 0 Then result = Left$(result, (Len(result) - 1)) End If FindString = result End Function