Мой код vlookup для vba не работает - PullRequest
0 голосов
/ 08 мая 2018

Я пытался присмотреть за ним, но мне не удалось решить его. Это был бы простой vlookup, но он должен быть частью большего кода. У меня есть столбец A на sheet1, и я хотел бы найти соответствующие адреса электронной почты для них на листе под названием "base" (номер в столбце A, адрес электронной почты в столбце C) Можете ли вы помочь мне? Извините, я добрый новичок, большое спасибо заранее.

Public Sub email_search()
Dim lastrow As Long
lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
Set myrange = base.Range("A2:C4800")
For i = 1 To lastrow
Cells(i, 2) = Application.WorksheetFunction.VLookup(Cells(i, 1), myrange, 3, False)
Next i

End Sub

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Разве вы не можете вместо этого использовать нормальную формулу?

Предполагая, что столбец A на Листе 1 содержит соответствующий идентификатор из столбца A на Листе 2, необходимая информация находится в столбце C на Листе 2. Результат, вставленный в столбец B на листе 1:

Используйте формулу в B2 (sheet1) и перетащите вниз:

= ЕСЛИОШИБКА (ВПР (A2, Лист2! A: C, 3, ложь), "")

Это оставит вас пустой ячейкой, если произойдет ошибка. Изменить по вкусу!

0 голосов
/ 08 мая 2018

Я бы использовал обработчик ошибок, поэтому, если искомого значения нет в источнике, он не возвращает ошибку. Кроме того, присвоение диапазонов из разных листов немного отличается:

    Public Sub email_search()
    Dim lastrow As Long
       lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
    Set myrange = Worksheets("Base").Range("A2:C4800")
    For i = 1 To lastrow
    On Error Resume Next
        result = Application.WorksheetFunction.VLookup(Cells(i, 1), myrange, 3, False)
        Cells(i, 2) = result
    Next i

    End Sub
...