Título: Alternativa a bucles for…next en Visual Basic Publicado por: Superbig en 15 Julio 2015, 12:18 pm Hola; estoy programando en visual basic una macro para excel, en este bucle,que tiene otros bucles anidados, el problema es el tiempo que tarda en calcularlo(varios dias).
El cometido del bucle es comparar el contenido de la matriz bidimensional “mimatriz(1600000,5)” con el contenido de una columna de una hoja de excel que tiene 80000 elementos, buscando determinadas coincidencias que en caso de encontrarlas las almacenaría en “copmimatriz”. Alguien sabe si hay alguna manera de hacer este tipo de comparaciones sin usar bucles, de manera que sea más rapido?, gracias y un saludo For AA = 1 To 1600000 TT = 0 For A = 0 To 79996 T = 0 For C = 1 To 5 For B = A + 1 To 4 + A If MIMATRIZ(AA, C) = Cells(B, 6).Value Then T = T + 1 GoTo 5850 End If Next B 5850 Next C If T = 4 Then TT = TT + 1 End If Next A If TT > 0 Then GoTo 5900 End If AB = AB + 1 For BB = 1 To 5 COPMIMATRIZ(AB, BB) = MIMATRIZ(AA, BB) Next BB 5900 Next AA Título: Re: Alternativa a bucles for…next en Visual Basic Publicado por: 79137913 en 15 Julio 2015, 14:22 pm HOLA!!!
1, indenta tu codigo 2, utiliza geshi 3, sin bucles no se puede pero... 4, podes utilizar funciones de exel integradas para lograr mejor rendimiento, por ejemplo buscar o sumar.si , yo recomiendo sumar.si, es mas rapida, solo agrega una columna con unos cerca de tu base de comparacion y si da mas de uno hay coincidencia 5, Me tome el trabajo de optimizar tu codigo al maximo que vi posible sin quitarle la esencia: Código 6, Probalo y me decis cuanto tiempo te ahorre con el nuevo procedimiento. GRACIAS POR LEER!!! |