Macro para 150.000 a 300.000 filas ????

2 envíos / 0 nuevos
Último envío
eugeniocol
Imagen de eugeniocol
Offline
última acción: Hace 2 años 4 meses
Nivel 1 - 200 puntos
alta: 29/08/2017 - 17:21
Puntos: 1675
Macro para 150.000 a 300.000 filas ????

Hola buenas.

Tengo una formula para contar coincidencias columna O, las coincidencias de J:M con B:G.

J:M puede tener entre 150.000 a 300.000 filas y B:G entre 10.000 a 30.000 filas.

La formula hasta 150.000 filas en J:M la desplazo hasta el final y trada unos 30 minutos en recalcular pero la macro se queda colgada.

Mi intencion es encontrar una macro que sea mas rapida que la formula.

Esta es la macro

Sub BuscarCoincidencias() Application.ScreenUpdating = False Range(Range("N3"), Range("N3").End(xlDown)) = "" For x1 = 3 To Range("B3").End(xlDown).Row For x2 = 3 To Range("J3").End(xlDown).Row c = 0 For y = 10 To 12 Set n = Range("B" & x1 & ":G" & x1).Find(Cells(x2, y), , , xlWhole) If Not n Is Nothing Then c = c + 1 Next If c = 3 Then Range("N" & x2) = Range("N" & x2) + 1 Next Next End Sub

Y esta es la formula
=SUMA(N(MMULT(N(CONTAR.SI(DESREF(B$3:G$3;FILA(B$3:B$10000)-FILA(B$3););J5:M5)>0);{1;1;1;1})=4))

Bueno en el libro se pueden ver

 

Un Saludo.

 
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 2 días 5 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Las macros no son más rápidas

Las macros no son más rápidas que las fórmulas de Excel.

veo que tu fórmula incorpora la función DESREF

Esta función es una de las denominadas volátiles, que quiere decir que se recalcula siempre, cada vez que cambie algo en el libro. en tu caso, no estás calculando cada fórmula 150000 veces, sino que cada vez que se recalcula una celda estás volviendo a recalcular todas las DESREF

Prueba a desactivar el cálculo automático antes de extender la fórmula y luego vuelve a activarlo.

La otra alternativa es replantear la fórmula y poner algo que resulte más eficiente.

 

------
Ya sé Excel, pero necesito más.