MYVLOOKUP для поиска нескольких значений частичных совпадений и размещения их в одной ячейке - PullRequest
0 голосов
/ 24 мая 2019

В настоящее время я пытаюсь использовать следующий код VBA для поиска и извлечения информации из нескольких ячеек в одну ячейку.Он отлично работает для точных совпадений, но я бы также хотел найти частичные совпадения.Я знаю, что должен добавить вариант в синтаксис, но не уверен, как его выполнить.

Буду признателен за любую дополнительную помощь.

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

Я ожидаю, что выходные данные будут перечислены наверх другого в одной ячейке для всех частичных совпадений.

1 Ответ

0 голосов
/ 24 мая 2019

Вы должны использовать 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. Like - это Case Sensitive
  2. "*" & Variable ищет любую строку, конец которой является вашей переменной
  3. Variable & "*" ищет любую строку, с которой начинается ваша переменная
...