Как использовать Vlookup в VBA - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь использовать vlookup через VBA для извлечения значений из двух разных рабочих книг (A, B) и заполнения некоторых значений в столбце рабочей книги A

Для меня важно, чтобы диапазон поиска вРабочая книга B должна быть динамической.

Поэтому я уже вычислил количество строк таблицы в рабочей книге B.

Вот код, который я пытался написать. Он не компилируется из-засинтаксическая ошибка внутри Vlookup:

ActiveWorkbook.Sheets("Sheet1").Activate
     Columns("M:M").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("M2").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-12],[petest.xlsx]Sheet1!A1:"&lrow2,8,FALSE),RC[-1])"
    Range("M2").Select
    Selection.AutoFill Destination:=Range("M2:M" & lrow)
    Range("M2:M" & lrow).Select

Здесь lrow содержит последний столбец таблицы первой книги, а lrow2 - последний столбец второй книги (которую я ищу)

1 Ответ

1 голос
/ 26 июня 2019

Попробуйте изменить эту строку:

 ActiveCell.FormulaR1C1 = _
    "=IFERROR(VLOOKUP(RC[-12],[petest.xlsx]Sheet1!A1:"&lrow2,8,FALSE),RC[-1])"

на

 ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-12],[petest.xlsx]Sheet1!A1:L" & lrow & ",8,FALSE),RC[-1])"

Это вставит фактическое значение lrow в формулу

ОБНОВЛЕНИЕ

Вам нужно добавить «L» в формулу vlookup, чтобы иметь A1: L, а не только A1.Я отредактировал код выше.Попробуйте, пожалуйста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...