Я автоматизирую построение отчета в Excel, используя VBA. Часть этого процесса я использую vlookup для сравнения списков. На вкладке 1 содержится примерно 180 000 позиций с уникальным идентификатором, vlookup берет этот идентификатор и сравнивает с "владельцами" на вкладке 2 примерно с 250 000 позиций. Время выполнения этой операции составляет примерно 25-30 минут, и мне интересно, есть ли более быстрый путь? Может быть, я должен выполнить это сравнение, используя скрипт за пределами Excel, чтобы сократить время расчета?
Работает нормально, поэтому я не пытался устранить неполадки. У меня есть несколько идей, связанных с выполнением работы вне Excel, в фоновом режиме, но я ищу идеи от более широкой группы.
Вот строка, которую я сейчас использую для поиска, она повторяется 5 раз в коде.
Range("Table").Offset(1).Select
ActiveCell.FormulaR1C1 = "=IFNA(VLOOKUP([@ID],table,2,0),""Unassigned"")"
С каждой итерацией вышеприведенной строки в книге пересчитывается, что занимает 30 минут. Я попытался установить расчет на xlManual, а затем обратно на xlAutomatic, не повезло. Думал, что смогу просто запустить калькуляцию одного листа после написания формул.
Любопытно, если кто-нибудь знает более быстрый способ сделать это. Как я уже говорил, время выполнения этого раздела составляет 30 минут, а общее время выполнения - 35-40 минут.