首页 > 解决方案 > MYVLOOKUP 用于查找部分匹配的多个值并将它们拟合到一个单元格中

问题描述

我目前正在尝试使用以下 VBA 代码从多个单元格中查找信息并将其提取到一个单元格中。它非常适合精确匹配,但我希望它也能找到部分匹配。我知道我必须将 As 变体添加到语法中,但不确定如何执行它。

任何进一步的帮助将不胜感激。

Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long)

    'Update 20150310
    Dim rng As Range
    Dim xResult As String
    xResult = ""
    For Each rng In pWorkRng
        If rng = pValue Then
            xResult = xResult & Chr(13) & Chr(10) & rng.Offset(0, pIndex - 1)
        End If
    Next
    MYVLOOKUP = xResult

End Function

我希望所有部分匹配的输出都列在单个单元格中的另一个之上。

标签: excelvbamatchpartial

解决方案


您必须使用Like而不是=

Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long)

    'Update 20150310
    Dim rng As Range
    Dim xResult As String
    xResult = ""
    For Each rng In pWorkRng
        If rng Like "*" & pValue & "*" Then 'using Like and  "*" "*" means anything containing pValue
            xResult = xResult & Chr(13) & Chr(10) & rng.Offset(0, pIndex - 1)
        End If
    Next
    MYVLOOKUP = xResult

End Function

你必须注意这一点:

  1. LikeCase Sensitive
  2. "*" & Variable查找任何以您的变量结尾的字符串
  3. Variable & "*"查找任何以您的变量开头的字符串

推荐阅读