Saltar al contenido

Recorrer todas las ocurrencias de un registro muy muy lento


Recommended Posts

publicado

Hola a todos! como estan? 

recientemente me he sumando al foro, aunque lo he seguido hace mucho, son siempre mi referencia para cualquier duda o consulta asi que feliz de poder sumarme...

Ahora tengo un problema que me esta rompiendo la cabeza hace dos semanas, y me atasque.

Tengo una base de registros con mas de 170000 filas, cada registro puede tener mas de una fila, la base esta en la hoja 1.

Luego en la hoja dos tengo dos tablas, una a la izquierda que tiene esos mismos registros y su codigo U (ubicacion), sin duplicados.  Otra tabla mas a la derecha que agrupa los Codigo de Usos de cada  registros segun la categoria sea  Seccional, Division o Central.

 

Lo que necesito hacer es que por cada num de registro y cod U, busque en la hoja 1, si en alguna fila tiene un codigo de uso que este agrupado en seccion, division o central, y si es asi, que marque con una X la columna con el categoria.

hoja2 a modo de ejemplo

image.thumb.png.81aaab0ee7d2b9c2188c586521731579.png

ejemplo para el registro 298796 de SAN NIC.  si busco ese registro en la hoja 1 encuentro que sola una categoria tiene, que es la Division, pero para eso tuve que recorrer todas las ocurrencias de este registro que coincidan con la ubicacion san nic. y chequear cada categoria.

 

 

Probe de mil formas pero todas son lentisimas.  mas de diez minutos de ejecucion.

Sabiendo que son mas de 170 mil y que por cada uno tengo que recorrer todas las ocurrencias, hay alguna forma de hacerlo mas rapido?
 

Agradezco por favor si alguien me ayuda a salir de este punto... que me tiene mal.

 

subo archivo de ejemplo... 

test (1).zip vba.txt

publicado

Sube un archivo con un ejemplo de lo que tienes y de lo que quieres, no hace falta que la muestra sea muy extensa.

publicado

Hola Antoni! perdon me olvide de subir el archivo, aca va el codigo por un lado y el excel con nada casi por otro

queria que queden varios registros de distintas Cod U, y fue imposible... no se si sirvan de ejemplo asi tan tan resumido

vba.txt test (1).zip

publicado

Probé combinando Bubles de recorrido y Loop, , pero es un doble recorrido, por un lado recorrer la hoja uno para encontrar el numero de registro y el Cod U, que coincida, y luego hacer un find next, para buscar todas las ocurrencias de ese registro en ese codigo de U, e ir marcando cuando encuentre alguno de los codigos de uso que esta en la hoja 2, y luego recien saltar a la siguiente fila de la hoja 2...

las ultima vez que me anduvo tardo 11 min solo en hacer eso ?

publicado

El archivo .zip da error al intentar descomprimirlo.

Súbelo como .xlsx o súbelo a la nube (Mega, OneDrive, DropBox,......) y adjunta el enlace público

publicado

test xls.rar Antoni, ahi he probado de nuevo, simplificando en una hoja la base de datos, y al costado la tabla que deberia ser resultado , y junto a ella la tabla con los criterios a buscar por cada registro, el xls por mas que deje 5 filas no me lo sube, va de nuevo comprimido, y sino tmb por las dudas ? AQUI

 

Miles de gracias

publicado

No he podido probar la macro porqué al archivo que has subido le falta la hoja CoCo, aunque la he revisado y no parece tener excesivos problemas más allá del volumen de información.

En cualquier caso, añadiendo Application.ScreenUpdating=False al principio de la macro, el rendimiento debería mejorar bastante .

publicado
hace 25 minutos , Antoni dijo:

No he podido probar la macro porqué al archivo que has subido le falta la hoja CoCo, aunque la he revisado y no parece tener excesivos problemas más allá del volumen de información.

En cualquier caso, añadiendo Application.ScreenUpdating=False al principio de la macro, el rendimiento debería mejorar bastante .

Gracias Antoni, por tomarte el tiempo de revisarlo...pero con la limitante que no me deja subir casi nada, tuve que eliminar hoy y eliminar cientos dy miles de registros, para poder subir el ejemplo... 

Application.ScreenUpdating=False ya lo he agregado porque ese codigo se ejecuta dentro de otro, asi que esto esta activo, pero corriendo solo la parte que comparti me demora mas de 10 minutos... y sigo dando vueltas sin encontrar alguna otra forma, teniendo en cuenta que son mas de 170 mil

Estoy totalmente perdida, probe combinar match index etc, y no me funciona nada. asi como esta funciona pero excesivamente lento, se que tiene que a ver algo que lo optimice, pero sigo sin encontrarlo, no puedo avanzar de ahi ?

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.