Normalmente mis macros son relativamente sencillas y luego, poco a poco voy puliendo detalles para hacerlas más rápidas y más cómodas. En el trabajo manejo un fichero con muchas rutinas: desde seleccionar un fichero txt y pasarlo a una hoja hasta seleccionar varios ficheros, recorrer uno a uno y realizar diferentes operaciones con ellos.
Poco a poco la cantidad de cosas y subrutinas que he ido añadiendo (por necesidades de mi trabajo) han hecho que el tiempo que tardo en ejecutar todas las macros vaya incrementándose. No es excesivo aún, ronda el minuto y medio, pero se que trabajando con arrays o creando diccionarios (un compi que está de vacaciones me mencionó algo como Scripting Dictionary) para determinadas macros puedo acelerar todo bastante. Sobre todo a la hora de realizar operaciones en determinadas hojas.
Pongo un ejemplo:
Hoja1: Precios de productos (codigo, descripcion, precio)
Hoja2: Pedidos (pedido, codigo, cantidad)
Lo que hago es mediante código cómo este que pongo (que no tiene nada que ver:
With Sheets("REPOSICIONES").Range("G4:G" & UltimaFila)
.Formula = "=RC[-1]/DiasInforme"
.Formula = .Value
.NumberFormat = "0.00"
End With
Es anotar en la hoja2 el precio del producto (con un buscarv y en otra columna multiplicarlo por la cantidad).
Este proceso, recorriendo todas las filas de toda la hoja lleva un determinado tiempo que multiplicado por varias fórmulas más y varias hojas más se convierten en un minuto.
Y TODO el rollo éste que he contado es para pedir opiniones, ejemplos, etc. sobre las mejores prácticas en estos casos. ¿Se pueden almacenar esos datos en un array y recuperarlos haciendo un buscarv, una operación aritmética o similar? Apenas he utilizado arrays y me vendrían de perlas ejemplos para aprender.
Muchísimas gracias si os habéis leído este tocho
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Muy buenas tardes,
Normalmente mis macros son relativamente sencillas y luego, poco a poco voy puliendo detalles para hacerlas más rápidas y más cómodas. En el trabajo manejo un fichero con muchas rutinas: desde seleccionar un fichero txt y pasarlo a una hoja hasta seleccionar varios ficheros, recorrer uno a uno y realizar diferentes operaciones con ellos.
Poco a poco la cantidad de cosas y subrutinas que he ido añadiendo (por necesidades de mi trabajo) han hecho que el tiempo que tardo en ejecutar todas las macros vaya incrementándose. No es excesivo aún, ronda el minuto y medio, pero se que trabajando con arrays o creando diccionarios (un compi que está de vacaciones me mencionó algo como Scripting Dictionary) para determinadas macros puedo acelerar todo bastante. Sobre todo a la hora de realizar operaciones en determinadas hojas.
Pongo un ejemplo:
Hoja1: Precios de productos (codigo, descripcion, precio)
Hoja2: Pedidos (pedido, codigo, cantidad)
Lo que hago es mediante código cómo este que pongo (que no tiene nada que ver:
With Sheets("REPOSICIONES").Range("G4:G" & UltimaFila) .Formula = "=RC[-1]/DiasInforme" .Formula = .Value .NumberFormat = "0.00" End With
Es anotar en la hoja2 el precio del producto (con un buscarv y en otra columna multiplicarlo por la cantidad).
Este proceso, recorriendo todas las filas de toda la hoja lleva un determinado tiempo que multiplicado por varias fórmulas más y varias hojas más se convierten en un minuto.
Y TODO el rollo éste que he contado es para pedir opiniones, ejemplos, etc. sobre las mejores prácticas en estos casos. ¿Se pueden almacenar esos datos en un array y recuperarlos haciendo un buscarv, una operación aritmética o similar? Apenas he utilizado arrays y me vendrían de perlas ejemplos para aprender.
Muchísimas gracias si os habéis leído este tocho