这个问题源于我的另一篇文章。 (见Search through column in excel for specific strings where the string is random in each cell)
使用上面的图像作为参考,我试图使用E列作为“查找值”搜索B列(实际上超过1000行)。最终目标是“仅”显示在C列中显示的名称。技巧是所有随机生成的字符包含名称。以下是我希望数据表的样子。公式或模块应该可以工作,但vlookup和其他查找功能我无法工作。
答案 0 :(得分:11)
对于工作表函数方法,您可以输入C3并填写此公式:
=LOOKUP(8^5,SEARCH(E$3:E$7,B3),E$3:E$7)
选择常数8 ^ 5 = 32768大于最大可能的字符串长度,以便LOOKUP返回最后一个匹配的值。如果没有找到字符串,则公式返回#N / A.
答案 1 :(得分:4)
另一种可能性,可能更容易理解,然后最初的assylias帖子,但也可能是更多时间消费(虽然有1000行,我认为它不会很重要)在下面。
这要求您将E列中的范围命名为myNames(或任何您想要的名称,只需更新代码 - 或者,您只需编写Range(“E1:E6”))。此外,如果您从列B移动随机值,也要在代码中更新它。
Sub findString()
Dim celString As Range, rngString As Range, celSearch As Range, rngSearch As Range
Dim wks As Worksheet
Set wks = Sheets("Sheet1") 'change sheet reference to whatever your sheet name is
Set rngString = wks.Range("myNames")
Set rngSearch = Intersect(wks.UsedRange, wks.Range("B1").EntireColumn)
For Each celString In rngString
For Each celSearch In rngSearch
If InStr(1, celSearch.Text, celString.Value) > 0 Then
celSearch.Offset(, 1) = celString.Value
End If
Next
Next
End Sub
因为,我也在研究你的原始问题,我建议通过Siddharth的答案获取计数,然后运行这个,或上面的assylias代码来获取列旁边的名称。您可以在工作表上放置一个按钮,或者只使用“宏”对话框来运行宏。