Поиск с разными вариантами - PullRequest
0 голосов
/ 16 октября 2019

У меня есть код для VLookup. Проблема в том, что я хочу иметь несколько вариантов названия страны, поэтому он должен использовать их все, прежде чем он выдаст ошибку. Таким образом, он должен выглядеть в столбце A, затем в столбце B, затем в столбце C.

Мои данные (лист «Страны»):

enter image description here

Мой код:

Sub PasteFormulaToRange()

    Dim refRng As Range, ref As Range, dataRng As Range

    Set refRng = ThisWorkbook.Worksheets("Main").Range("K2:K969") 'horizontal range of look up values
    Set dataRng = ThisWorkbook.Worksheets("Countries").Range("A2:D198") 'data block you want to look up value in

    For Each ref In refRng
        ref.Offset(0, 2) = Application.WorksheetFunction.VLookup(ref, dataRng, 4, False)
    Next ref
End Sub

1 Ответ

3 голосов
/ 16 октября 2019

VLookup не способен выполнять поиск по нескольким столбцам, для этого вам нужно использовать Range.Find, чтобы найти строку, а затем извлечь данные в столбце 4. Есть еще аргументы для Range.Find, на которые вы можете сослаться https://excelmacromastery.com/excel-vba-find/

Sub NewPasteFormulatoRange()

    Dim refRng As Range, ref As Range, dataRng As Range
    Dim foundrow as Long
    Set refRng = ThisWorkbook.Worksheets("Main").Range("K2:K969") 'horizontal range of look up values
    Set dataRng = ThisWorkbook.Worksheets("Countries").Range("A2:C198") 'data block you want to look up value in

    For Each ref In refRng
        Set findref = dataRng.Find(ref)
        If Not findref Is Nothing Then
            foundrow = findref.Row
            ref.Offset(0, 2) = ThisWorkbook.Worksheets("Countries").Cells(foundrow, 4)
        End If
    Next ref
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...