No se como enfocar la solucion a este problema.

27/11/2008 - 19:00 por Mambrino44 | Informe spam
Hola de nuevo amigos, siento tener que volver solicitar vuestra ayuda
pero tengo un nuevo problema que no se como enfocar para solucionarlo
efectivamente.

Estoy haciendo un libro excel para controlar y gestionar el material
que vendemos en la oficina. He estado probando varias maneras de
hacerlo y al final me he decantado por utilizar VBA para hacer casi
todo el libro pues la cantidad de datos a manipular es muy grande y si
lo hacia mediante formulas en las celdas cualquier operacion se volvia
eterna. Despues de muchas pruebas he visto que el uso de filtro
avanzado era lo que mas rapidez me proporcionaba en los calculos. Aun
asi, hay una rutina que no he podido agilizar y desde que comienza
hasta que termina puede pasar mas de una hora. Quisiera saber si es
posible hacer los calculos que a continuacion expongo, en un tiempo
mas reducido.

Tengo una lista de 32 vendedores en una hoja. Otra lista de 300
productos en la misma hoja y una base de datos de 60 mil filas con
informacion sobre ventas y reposiciones de productos de cada vendedor
en otra hoja. Mas o menos esto es la base de datos:

VENDEDOR / MOVIMIENTO / PRODUCTO / CANTIDAD
luis / Reposicion / producto 1 / 50
Manuel / Venta / producto 2 / 13
Jose / Reposicion / producto 3 / 24

... asi hasta sesenta mil filas.

Necesito una rutina en VBA que calcule en otra hoja el total de
reposiciones y ventas de cada producto y de cada vendedor. O sea que
obtengamos algo así :

LUIS
MANUEL etc.
REPOS. / VENTAS REPOS./ VENTAS
producto 1 3100 3050 2754 2743
producto 2 2765 2712 2715 2705
producto 3 2987 2955 2998 2989
etc.

Dicha rutina la tengo hecha utilizando filtro avanzado. El metodo que
he utilizado es que busque la reposicion de cada producto de un
vendedor utilizando un filtrado para cada vez, asi hasta que termina
con todos los productos, luego hace lo mismo con las ventas, pero
puede tardar varios minutos en terminar todos los calculos para un
solo vendedor por lo que si multiplico ese tiempo por los 32
vendedores que hay el tiempo total se va a mas de una hora de
calculos.
Se os ocurre otra manera de enfocar esta rutina para que tarde menos?

Como siempre os envio un gran saludo y muchas gracias por vuestro
tiempo y ayuda.

Juan Sánchez

Preguntas similare

Leer las respuestas

#1 Raúl Bajo Sanz
27/11/2008 - 19:17 | Informe spam
Yo creo que lo más cómodo sería una tabla dinámica.

"Mambrino44" wrote:

Hola de nuevo amigos, siento tener que volver solicitar vuestra ayuda
pero tengo un nuevo problema que no se como enfocar para solucionarlo
efectivamente.

Estoy haciendo un libro excel para controlar y gestionar el material
que vendemos en la oficina. He estado probando varias maneras de
hacerlo y al final me he decantado por utilizar VBA para hacer casi
todo el libro pues la cantidad de datos a manipular es muy grande y si
lo hacia mediante formulas en las celdas cualquier operacion se volvia
eterna. Despues de muchas pruebas he visto que el uso de filtro
avanzado era lo que mas rapidez me proporcionaba en los calculos. Aun
asi, hay una rutina que no he podido agilizar y desde que comienza
hasta que termina puede pasar mas de una hora. Quisiera saber si es
posible hacer los calculos que a continuacion expongo, en un tiempo
mas reducido.

Tengo una lista de 32 vendedores en una hoja. Otra lista de 300
productos en la misma hoja y una base de datos de 60 mil filas con
informacion sobre ventas y reposiciones de productos de cada vendedor
en otra hoja. Mas o menos esto es la base de datos:

VENDEDOR / MOVIMIENTO / PRODUCTO / CANTIDAD
luis / Reposicion / producto 1 / 50
Manuel / Venta / producto 2 / 13
Jose / Reposicion / producto 3 / 24

asi hasta sesenta mil filas.

Necesito una rutina en VBA que calcule en otra hoja el total de
reposiciones y ventas de cada producto y de cada vendedor. O sea que
obtengamos algo así :

LUIS
MANUEL etc.
REPOS. / VENTAS REPOS./ VENTAS
producto 1 3100 3050 2754 2743
producto 2 2765 2712 2715 2705
producto 3 2987 2955 2998 2989
etc.

Dicha rutina la tengo hecha utilizando filtro avanzado. El metodo que
he utilizado es que busque la reposicion de cada producto de un
vendedor utilizando un filtrado para cada vez, asi hasta que termina
con todos los productos, luego hace lo mismo con las ventas, pero
puede tardar varios minutos en terminar todos los calculos para un
solo vendedor por lo que si multiplico ese tiempo por los 32
vendedores que hay el tiempo total se va a mas de una hora de
calculos.
Se os ocurre otra manera de enfocar esta rutina para que tarde menos?

Como siempre os envio un gran saludo y muchas gracias por vuestro
tiempo y ayuda.

Juan Sánchez



http://www.microsoft.com/communitie...39e314ce0d
Respuesta Responder a este mensaje
#2 Mambrino44
27/11/2008 - 19:26 | Informe spam
On 27 nov, 19:17, Raúl Bajo Sanz
wrote:
Yo creo que lo más cómodo sería una tabla dinámica.




Bien, no se casi nada de las tablas dinamicas. Creo que una tabla
dinamica se recalcula cuando tu decides no es asi? entonces, en el
momento de decidir que esa tabla dinamica se recalculase tardaría
ostensiblemente menos que utilizando filtro avanzado?
Respuesta Responder a este mensaje
#3 Raúl Bajo Sanz
27/11/2008 - 19:39 | Informe spam
He encontrado esto en la página de Microsoft, creo que te será útil:

http://office.microsoft.com/es-es/e...0714013082

En el caso que expones, donde habla de los orígenes de datos fíjate en
"lista o base de datos", en este caso no es necesaria la "fuente de datos
externa".

Sobre tu duda de cuándo se recalcula una tabla dinámica, cada vez que haces
cambios en el origen tienes que volver a dar a "actualizar" en la barra de
herramientas de la tabla dinámica.

Siendo 60.000 registros no será muy rápida, sobre todo cuando muevas campos,
con distintos subtotales, etc, pero creo que es la mejor opción.

Saludos.

"Mambrino44" wrote:

On 27 nov, 19:17, Raúl Bajo Sanz
wrote:
> Yo creo que lo más cómodo sería una tabla dinámica.


Bien, no se casi nada de las tablas dinamicas. Creo que una tabla
dinamica se recalcula cuando tu decides no es asi? entonces, en el
momento de decidir que esa tabla dinamica se recalculase tardaría
ostensiblemente menos que utilizando filtro avanzado?



http://www.microsoft.com/communitie...313ec45840
Respuesta Responder a este mensaje
#4 Mambrino44
27/11/2008 - 19:51 | Informe spam
Muchas gracias, me lo voy a mirar a ver si consigo solucionar el
problema.

Un saludo amigo.
Juan Sánchez
Respuesta Responder a este mensaje
#5 paulmartinezp
28/11/2008 - 15:39 | Informe spam
On 27 nov, 13:51, Mambrino44 wrote:
Muchas gracias, me lo voy a mirar a ver si consigo solucionar el
problema.

Un saludo amigo.
Juan Sánchez



Hola,
Puedes probar el SUMAR.SI() creo que no se demoraria tanto...

Atte. Paul
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida