Добрый день!
Пытаюсь как-то оптимизировать свою работу.
Есть две книги (упрощенные версии вложил) 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 |
Спасибо!