查找string列表再次列出单词列表并返回一个值(Excel)

在Excel中,我有两张纸。 在Sheet1列A中,我有string。 在Sheet2中,我有两列,列A包含一个可能位于Sheet1的string中的某个单词,如果在Sheet1的string中findSheet2!A:A的任何位置,则列B将返回一个返回值! :一个。 例如:

第1页:

Col. A **Col. B (These are the results I WANT from Sheet2)** stackoverflow excel blue pony Group2 grapes monkey help me Group1 random words not very creative Group3 

在表2中,你有

  Col. A Col. B monkey Group1 excel Group2 creative Group3 

我一直在搞什么基本上涉及到Sheet1!的一个vlookup的一堆不同的迭代!B:B,但我永远不能得到它的权利。 我一直专注于vlookups的原因是因为需要返回Sheet2中的值!B:B如果Sheet2!A:如果在Sheet1中find任何位置!A:A。 我相信这个解决scheme可能比这个更好,我只是坚持这一点。 任何帮助将不胜感激。

修改问题修改后的公式

试试这个公式在Sheet1 B2复制下来

=LOOKUP(2^15,SEARCH(Sheet2!A$1:A$4,A2),Sheet2!B$1:B$4)

这应该适用于您的示例,但在实际情况下,您可能会得到错误匹配,因为“key”的search值将与“monkey”匹配。 为了防止你可以使用这个只能匹配整个单词的版本:

=LOOKUP(2^15,SEARCH(" "&Sheet2!A$1:A$4&" "," "&A2&" "),Sheet2!B$1:B$4)

一个小VBA可能是你最好的select在这里…

 Sub finder() Dim ws1, ws2 As Worksheet Set ws1 = ThisWorkbook.Sheets("Sheet1") Set ws2 = ThisWorkbook.Sheets("Sheet2") Dim i As Integer i = 1 Do Until ws2.Cells(i, 1).Value = "" 'The next line takes the value from sheet2, looks for it in sheet1 then puts 'the value of the cell directly adjacent back into sheet2. This may fail if a 'value is not found. ws2.Cells(i, 2).Value = ws1.Range("A:A").Find(ws2.Cells(i, 1).Value).Offset(0, 1).Value i = i + 1 Loop End Sub