Добрый день!
Пытаюсь как-то оптимизировать свою работу.
Есть две книги (упрощенные версии вложил) rab, baza.
В книгу rab с помощью ВПР (вставляю макросом) подтягиваются данные из книги baza.
Все работает, но когда в книге rab много строк (несколько тысяч), то работа заметно замедляется.
Как-то мне помогли на планете в подобной ситуации через словари (scripting.dictionary).
Пробовал по аналогии, не получается, нашел на дружественном ресурсе описание Dictionary и Collection, но пока не получается разобраться.
Код по которому получаю данные:
Прошу помочь разобраться.
Спасибо!
Пытаюсь как-то оптимизировать свою работу.
Есть две книги (упрощенные версии вложил) rab, baza.
В книгу rab с помощью ВПР (вставляю макросом) подтягиваются данные из книги baza.
Все работает, но когда в книге rab много строк (несколько тысяч), то работа заметно замедляется.
Как-то мне помогли на планете в подобной ситуации через словари (scripting.dictionary).
Пробовал по аналогии, не получается, нашел на дружественном ресурсе описание Dictionary и Collection, но пока не получается разобраться.
Код по которому получаю данные:
| Код |
|---|
Sub Primer()
Dim rab, baza As Workbook
Dim sht As Worksheet
Dim rRange, rCell As Range
Set rab = ActiveWorkbook
LastOSNOVA = Cells(Rows.Count, 1).End(xlUp).Row
Set baza = Workbooks.Open("baza.xlsm")
For Each sht In baza.Worksheets
If sht.Range("A1").Value = rab.Sheets("OSNOVA").Range("I1").Value Then
sht.Activate
NewName = sht.Name
BookName = ActiveWorkbook.Name
Lastbaza = Cells(Rows.Count, 1).End(xlUp).Row
rab.Sheets("OSNOVA").Range("G2").FormulaLocal = _
"=ВПР(СЦЕПИТЬ(B2;F2);" & Workbooks(BookName).Sheets(NewName).Range("A:G").Address(External:=True) & ";4;0)"
rab.Sheets("OSNOVA").Range("H2").FormulaLocal = _
"=ВПР(СЦЕПИТЬ(B2;F2);" & Workbooks(BookName).Sheets(NewName).Range("A:G").Address(External:=True) & ";5;0)"
rab.Activate
Sheets("OSNOVA").Range("G2:H2").AutoFill Destination:=Range(Cells(2, 7), Cells(LastOSNOVA, 8))
End If
Next
End Sub
|
Спасибо!