Страницы: 1
RSS
ВПР в VBA для всего столбца
 
Добрый день!

Только начинаю изучать VBA. Подскажите, пожалуйста, один момент, никак не могу найти решение.

Требуется прицепить справа от таблицы на листе IzbrSvod  с числом столбцов ColEndIzbr и строк RowEndRpt некоторые данные из справочника, лист SpravSubj.            То есть применить некий аналог ВПР.

Всего там будет семь дополнительных столбцов.

Вот команда для одной из них.
IzbrSvod.Cells(2, ColEndIzbr + 1).Value = WorksheetFunction.VLookup(IzbrSvod.Cells(2, ColEndIzbr - 3), SpravSubj.Range("A:F"), 4, False)

Всё работает отлично, но для одной ячейки. Как заполнить данные до самой последней строки таблицы?
Может можно как-то изменить эту команду или добавить дополнительную?

Или же придется задавать семь циклов?  
 
во-первых, желательно прикладывать небольшой файл-пример (не рабочий файл на 10Мб, а тестовый небольшой пример)
во-вторых, если вы вводите формулу в 1 ячейку, то и получите формулу в одной ячейке. Если будете вводить в диапазон ячеек, то и получите формулу в диапазоне ячеек.
Что-то типа такого
Код
    With IzbrSvod
        'находим номер последней строки в столбце А
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
        'первое - указываем диапазон, т.е. Range
        'второе - указываем LastRow во втором Cells
        .Range(.Cells(2, ColEndIzbr + 1), .Cells(LastRow, ColEndIzbr + 1)).Value = WorksheetFunction.VLookup(IzbrSvod.Cells(2, ColEndIzbr - 3), SpravSubj.Range("A:F"), 4, False)
    End With
Изменено: New - 03.08.2022 17:36:49
 
Цитата
написал:
во-первых, желательно прикладывать небольшой файл-пример (не рабочий файл на 10Мб, а тестовый небольшой пример)
во-вторых, если вы вводите формулу в 1 ячейку, то и получите формулу в одной ячейке. Если будете вводить в диапазон ячеек, то и получите формулу в диапазоне ячеек.
Что-то типа такого
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7            With   IzbrSvod              'находим номер последней строки в столбце А              LastRow = .Cells(.Rows.Count,   "A"  ).  End  (xlUp).Row               'первое - указываем диапазон, т.е. Range              'второе - указываем LastRow во втором Cells              .Range(.Cells(2, ColEndIzbr + 1), .Cells(LastRow, ColEndIzbr + 1)).Value = WorksheetFunction.VLookup(IzbrSvod.Cells(2, ColEndIzbr - 3), SpravSubj.Range(  "A:F"  ), 4,   False  )          End   With   
 
Спасибо. Я нечто подобное пробовал, только без With. В Вашем варианте вставляет по всему столбцу, но, похоже ищет только самое первое значение (весь столбец получается идентичным).  
 
можете не нажимать на кнопку "Цитировать", я помню, что я писал совсем недавно.
я вам сочувствую, жму руку, желаю удачи... вы, наверное, плохо прочитали моё первое предложение в моём ответе, которое вы к тому же, процитировали.
Изменено: New - 03.08.2022 18:06:37
Страницы: 1
Наверх