Como acortar tiempos de proceso ???

29/06/2009 - 13:35 por JC | Informe spam
Hola Amigos:

Vuelvo a recurrir a Vosotros, para ver si mis complicaciones tienen alguna
solución.
Como siempre os pido que acepteis mis disculpas, si no se expresarme con
toda la claridad que sería mi deseo.

Estoy confeccionando una herramientita, para diariamente poder actualizar
una base de datos de 30.000 productos.

Tengo 2 posibles fuentes de consulta, para los datos que necesito en la hoja
1, si no lo encuentro en la 1ª base de datos (hoja 2), tiene que ir a la 2ª
(hoja 3) a realizar la operación.

La gran pega es que son 32 columnas por los 30.000 registros en filas y se
"eterniza", ya que el cálculo se va a las 5 horas y pico.
Ya que estoy empleando, (después de averiguar la cantidad de filas que son,
ya que, diariamente se crean productos nuevos:
x = 2
While Cells(x, 1) <> ""
x = x + 1
Wend

Formulas de este tipo:
=SI((INDICE('BASE_DATOS_1'!$I:$I;COINCIDIR($AM2;'BASE_DATOS_1'!$Q:$Q;0);1))=0;(INDICE('BASE_DATOS_2'!$I:$I;COINCIDIR($AM2;'BASE_DATOS_2'!$Q:$Q;1);1));(INDICE('BASE_DATOS_1'!$I:$I;COINCIDIR($AM2;'BASE_DATOS_1'!$Q:$Q;0);1)))

Con un paste & copy:
Worksheets("DL").Range("AP2:BU2").Copy _
Destination:=Range(Cells(3, 2), Cells((x - 1), 33))

Sabríais, por favor, decirme o aconsejarme algún otro sistema o si conocéis
un método diferente, para conseguir realizar esta labor recortando
sensiblemente los tiempos de cálculo ???

Mil gracias por adelantado y si (como es seguro) me he dejado algún dato sin
aportar, no dudeis, por favor, en comentarmelo.

Un reconocido abrazo.

Juan Carlos.
 

Leer las respuestas

#1 pepe
29/06/2009 - 17:05 | Informe spam
Sería mucho más rápido su utilizases buscarv en las fórmulas (previamente
tendrías que ordenar la base de datos por la columna de búsqueda).


"JC" escribió en el mensaje de noticias
news:
Hola Amigos:

Vuelvo a recurrir a Vosotros, para ver si mis complicaciones tienen alguna
solución.
Como siempre os pido que acepteis mis disculpas, si no se expresarme con
toda la claridad que sería mi deseo.

Estoy confeccionando una herramientita, para diariamente poder actualizar
una base de datos de 30.000 productos.

Tengo 2 posibles fuentes de consulta, para los datos que necesito en la
hoja
1, si no lo encuentro en la 1ª base de datos (hoja 2), tiene que ir a la

(hoja 3) a realizar la operación.

La gran pega es que son 32 columnas por los 30.000 registros en filas y se
"eterniza", ya que el cálculo se va a las 5 horas y pico.
Ya que estoy empleando, (después de averiguar la cantidad de filas que
son,
ya que, diariamente se crean productos nuevos:
x = 2
While Cells(x, 1) <> ""
x = x + 1
Wend

Formulas de este tipo:
=SI((INDICE('BASE_DATOS_1'!$I:$I;COINCIDIR($AM2;'BASE_DATOS_1'!$Q:$Q;0);1))=0;(INDICE('BASE_DATOS_2'!$I:$I;COINCIDIR($AM2;'BASE_DATOS_2'!$Q:$Q;1);1));(INDICE('BASE_DATOS_1'!$I:$I;COINCIDIR($AM2;'BASE_DATOS_1'!$Q:$Q;0);1)))

Con un paste & copy:
Worksheets("DL").Range("AP2:BU2").Copy _
Destination:=Range(Cells(3, 2), Cells((x - 1), 33))

Sabríais, por favor, decirme o aconsejarme algún otro sistema o si
conocéis
un método diferente, para conseguir realizar esta labor recortando
sensiblemente los tiempos de cálculo ???

Mil gracias por adelantado y si (como es seguro) me he dejado algún dato
sin
aportar, no dudeis, por favor, en comentarmelo.

Un reconocido abrazo.

Juan Carlos.

Preguntas similares