Pregunta

Codificé un script VBA en Excel que agrega nuevos datos a una hoja de datos con información previa. Antes de hacerlo, los nuevos datos se copian en una hoja de datos provisionales. Para evitar duplicados, creo una columna adicional y hago un Vlookup de IDS. Si la ID de los nuevos datos importados ya está en la hoja de datos con los datos antiguos, esta fila está marcada como duplicada y se eliminará. Las "filas no duplicadas" se copian luego en la hoja de datos final, donde se almacenan todos los datos.

Ahora mismo uso una referencia de columna (A: a) en VlookUP y no sé si quizás esta es la razón por la cual el script de VBA necesita todos los días más recursos y tiempo para ejecutar. Cuando codifiqué por primera vez, hice la prueba con no más de 4,000 filas en la hoja de datos original y 4,000 filas en los datos importados. La macro se realizó después de 90 segundos. En este momento, necesita más de 5 minutos y la hoja de datos con datos es solo 40,000 filas grandes, mientras que los nuevos datos siempre son de alrededor de 4,000 filas.

¿Debo hacer referencia dinámica al rango en VlookUP en lugar de usar A: A o no importa en términos de velocidad?

¿Fue útil?

Solución

Como se mencionó en mi comentario, ciertamente hay una manera de realizar esta tarea utilizando VBA, pero a veces la solución más simple es la mejor.Recomendaría agregados todos los registros de 40K cada vez y usando la función "Eliminar duplicados" debajo de la cinta "Datos" utilizando la columna que contiene su valor único.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top