Excel:在进行部分匹配时,在单个单元格中返回多个匹配项

时间:2017-10-24 02:29:25

标签: excel excel-vba excel-formula vlookup lookup vba

我正在处理一个包含两列的文件。第一列有简单的三个单词句子。第二个是单字关键字。

我希望能够搜索第一列,查找具有特定关键字的所有句子,并将其列为关键字旁边的分隔值。

假设一个管道(“|”)作为分隔符,我会得到这样的结果:

First Column
Very blue sky.
Red sky tonight. 
Blue sky forever. 
My red car. 
Red red red.

第二栏如下:

Second Column
Blue
Red

所需的解决方案(有2列,蓝色和红色在第一列)

Second Column         Results Column
Blue                  Very blue sky. | Blue sky forever. 
Red                   Red sky tonight. | My red car. | Red red red.

谢谢!

1 个答案:

答案 0 :(得分:0)

这是一种方法。

  1. 按ALT + F11键打开Visual Basic编辑器(VBE)。
  2. 使用Insert>>插入新模块模块
  3. 在代码窗格中粘贴下面的代码。

    "30" or "31"
  4. 然后你可以像在任何其他正常功能中一样使用此功能,例如

    Public Function ConcatPartLookUp(rngInput As Range, rngSource As Range, Optional strDelimiter As String, Optional blCaseSensitive) Dim rng As Range If strDelimiter = "" Then strDelimiter = "|" If IsMissing(blCaseSensitive) Then blCaseSensitive = False Else blCaseSensitive = True End If For Each rng In rngSource If blCaseSensitive Then If InStr(1, rng.Value, rngInput.Value, vbBinaryCompare) > 0 Then ConcatPartLookUp = ConcatPartLookUp & strDelimiter & rng.Value Else If InStr(1, rng.Value, rngInput.Value, vbTextCompare) > 0 Then ConcatPartLookUp = ConcatPartLookUp & strDelimiter & rng.Value End If Next If Len(ConcatPartLookUp) > 0 Then ConcatPartLookUp = Mid(ConcatPartLookUp, 2, Len(ConcatPartLookUp)) End Function

    请注意我提供了两个可选参数,从长远来看可能会有用。如果你想让它区分大小写并通过一个不同的分隔符说"#"然后你需要使用:

    =ConcatPartLookUp(B2,A2:A6)