Добрый день. Есть 2 файла с 300 000+ строк и 30+ столбцов. Из одного файла в другой надо заВПРить более 15 столбцов по 1 столбцу с ключом. Есть макрос, в котором прописаны именно ВПР типа
Код |
---|
Set x = Workbooks(xFile).Worksheets(xsheet).Rows(1).find("Поставщик", , xlFormulas, xlWhole) x1 = x.Column Cells(2, x1).FormulaR1C1 = "=VLOOKUP(C1,'[" & "Расчет_общий.xlsb" & "]" & xsheets & "'!C1:C8,8,0)" ... Application.Calculation = xlCalculationManual Range("H2:S2").AutoFill Destination:=Range("H2:S" & xlastrow) Application.Calculation = xlCalculationAutomatic Range("H2:S" & xlastrow).Value = Range("H2:S" & xlastrow).Value |
Таким способом макрос работает около часа. При отключении автоматического пересчета формул и включением после протягивания формул, макрос работает около 40 минут. Пробовал делать это циклом типа
Код |
---|
For i=1 to lastrow For i1=1 to lastrow2 If cells(i,1)=cells(i1,1) then cells(i,10)=cells(i1,18) and _ cells(i,12)=cells(i1,22) and _ .... End if Next i1 Next i |
Работает такой вариант намного дольше (примерно 90 минут). Пробовал через массивы, в которые я закидывал обе таблицы + цикл типа предыдущего. Работает такой вариант тоже дольше чем ВПР.
Подскажите, пожалуйста, вариант, который будет работать быстрее. Если возможно, то небольшой пример кода с пояснениями.