Привет! Пишу макрос, в котором формула с помощью ВПР по ID из первого файла находит значение во втором файле (базе), пишет его в первый файл и преобразовывает его в значение. Макрос считает мои 80 500+ строк около 20 минут Если руками делать, т.е. вставить формулу в первую ячейку, клацнуть по черному кубику в правом углу, то весь столбец считается за 5 минут + макросом преобразовываю формулы в значения. Подскажите, может я не так макрос пишу:
Код
Function FillColum2()
Dim formula As String
Dim counter As Long
counter = 3
Debug.Print ("Время начала " & Now)
Range("K32:K80401").Select
For Each cell In Selection
formula = "=ВПР('[Файл_1.xlsb]ID'!A" & counter & ";'[Файл_2.xlsb]База'!$A$3:$AE$80500;13;ЛОЖЬ)"
cell.FormulaLocal = formula
cell.formula = cell.Value
counter = counter + 1
Next cell
Debug.Print ("Время окончания " & Now)
End Function
И зачем формулу вставлять макросом? Считайте нужное кодом и вставляйте значения
Код
Sub FillColum2()
Dim counter As Long
counter = 3
For Each cell In Range("K32:K80401").Cells
cell.Value = Application.WorksheetFunction.VLookup(Workbook("Файл_1.xlsb").Worksheets("ID").Range("A" & counter), Workbook("Файл_2.xlsb").Worksheets("База").Range("A3:A80500"), 13, False)
counter = counter + 1
Next cell
End Sub
писал "на коленке", проверьте
Согласие есть продукт при полном непротивлении сторон
dimm, если можно отсортировать базу по первому столбцу, то можно использовать ВПР с последним параметром ИСТИНА (интервальный просмотр). Так ВПР работает на порядок быстрее.