Pergunta

Eu codifiquei um script VBA no Excel, que adiciona novos dados em uma folha de dados com informações anteriores. Antes de fazer isso, os novos dados são copiados em uma folha de dados provisória. Para evitar duplicatas, criamos uma coluna adicional e faço um vlookup de IDs. Se o ID dos novos dados importados já estiver na folha de dados com os dados antigos, esta linha será marcada como duplicada e será excluída. As "linhas não duplicadas" são então copiadas para a folha de dados final, onde todos os dados são armazenados.

Agora eu uso uma referência de coluna (A: a) no vlookup e não sei se talvez esta seja a razão pela qual o script do VBA precisa de cada dia mais recursos e tempo para ser executado. Quando codifiquei pela primeira vez, fiz o teste sem mais de 4.000 linhas na folha de dados original e 4.000 linhas nos dados importados. A macro foi feita após 90 segundos. Agora, ele precisa de mais de 5 minutos e a folha de dados com dados é apenas 40.000 linhas grandes, enquanto os novos dados estão sempre em torno de 4.000 linhas.

Devo referenciar dinamicamente o intervalo no vlookup em vez de usar um: a ou não importa em termos de velocidade?

Foi útil?

Solução

Como mencionado no meu comentário, certamente há uma maneira de realizar essa tarefa usando o VBA, mas às vezes a solução mais simples é melhor.Eu recomendo adicionei todos os registros de 40K a cada vez e usando a função "Remover Duplicates" na faixa de opções "Dados" usando a coluna que contém seu valor exclusivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top