Добрый день! Необходимо создать макрос, аналогичный функции ВПР. Таблицы будут с разным количеством строк, что должно быть учтено в макросе. Макрос с формулой записал, но не знаю как адаптировать его под изменяемое количество строк. Прошу вашей помощи. Пример прикладываю Заранее спасибо)
Добрый день! Необходимо создать макрос, аналогичный функции ВПР. Таблицы будут с разным количеством строк, что должно быть учтено в макросе. Макрос с формулой записал, но не знаю как адаптировать его под изменяемое количество строк. Прошу вашей помощи. Пример прикладываю Заранее спасибо)Andrey2607
Если функцию ВПР сделать макросом, то в итоге получится еще дольше, чем обычным ВПР на листе. А вот через словарик на больших объемах должно быть побыстрее
[vba]
Код
Sub TipaVPR() r0_ = 2 c0_ = 1 n_ = Cells(Rows.Count, c0_).End(3).Row - r0_ + 1 c1_ = 2 ar = Cells(r0_, c0_).Resize(n_) ReDim arz(1 To n_, 1 To 1) With Sheets("Лист1") r00_ = 2 c00_ = 1 n0_ = .Cells(.Rows.Count, c00_).End(3).Row - r00_ + 1 ar0 = .Cells(r00_, c00_).Resize(n0_, 2) End With Set slov = CreateObject("Scripting.Dictionary") With slov For i = n0_ To 1 Step -1 .Item(ar0(i, 1)) = ar0(i, 2) Next i For i = 1 To n_ arz(i, 1) = .Item(ar(i, 1)) Next i End With Cells(r0_, c1_).Resize(n_) = arz End Sub
[/vba]
Если функцию ВПР сделать макросом, то в итоге получится еще дольше, чем обычным ВПР на листе. А вот через словарик на больших объемах должно быть побыстрее
[vba]
Код
Sub TipaVPR() r0_ = 2 c0_ = 1 n_ = Cells(Rows.Count, c0_).End(3).Row - r0_ + 1 c1_ = 2 ar = Cells(r0_, c0_).Resize(n_) ReDim arz(1 To n_, 1 To 1) With Sheets("Лист1") r00_ = 2 c00_ = 1 n0_ = .Cells(.Rows.Count, c00_).End(3).Row - r00_ + 1 ar0 = .Cells(r00_, c00_).Resize(n0_, 2) End With Set slov = CreateObject("Scripting.Dictionary") With slov For i = n0_ To 1 Step -1 .Item(ar0(i, 1)) = ar0(i, 2) Next i For i = 1 To n_ arz(i, 1) = .Item(ar(i, 1)) Next i End With Cells(r0_, c1_).Resize(n_) = arz End Sub