UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo


No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

dgiufre


Buenas noches, tengo una base de datos con 999.000 filas las cuales contienen numeros. Tengo un codigo que concatena esos numeros y los cuenta, pero solo lo hace con una limitada cantidad de filas, alrededor de 82000 y yo necesito concatenar y contar los numeros que tengo en las 999.000 filas. Les dejo adjunto el codigo para que me ayuden.

Desde ya muchas gracias

Les envio el codigo:

Dim Mat&, Dic&, Vec&
Dim Q&, i&, R&, j&, iniTime!
iniTime = Timer
Mat = Range("A1:X999001"): Q = UBound(Mat): R = UBound(Mat, 2)
Set Dic = CreateObject("Scripting.Dictionary")
For i = 1 To Q
  Vec = ""
  For j = 1 To R: Vec = Vec & Mat(i, j): Next
  If Vec <> "" Then
    If Dic.Exists(Vec) Then Dic(Vec) = 1 + Dic(Vec) Else Dic(Vec) = 1
  End If
  If (i Mod 100000) = 0 Then DoEvents
Next
Q = Dic.Count
With Range("z1").Resize(Q)
  .NumberFormat = "@": .Value = Application.Transpose(Dic.Keys)
End With
Range("aa1").Resize(Q) = Application.Transpose(Dic.Items)
MsgBox "Procesado en " & Format(Timer - iniTime, "0.00 seg.")
End
End Sub

Igtelo

avatar
Hola dgiufre.

Como dices, tu código trabaja bien pero son muchos datos para Excel, sube tu archivo al dropbox o donde sea para poder descargarlo y probar (no le pongas contraseña).

¿No se traba tu máquina, en qué tiempo ejecuta las 82 mil filas, etc, etc?

Saludos
Ignacio Téllez

dgiufre


Buen día, Igtelo, estoy enviando el link donde subi el archivo
En mi opinión la solucion estaria en fraccionar el calculo, quizas un for next =1 to 9990 step 100 que concatene y copie en 2 columnas, luego el segundo ciclo y al finalizar consolidar todas las columnas en 2 columnas con el resultado final
Muchas Gracias por tu ayuda


mediafire.com file/izxzga0njtmsvnk/Ejemplo+Igtelo.rar

dgiufre


Muchas Gracias, ya lo solucione

Atentos Saludos.-

Igtelo

avatar
Hola Dgiufre.

Que bien que ya lo solucionaste, te paso otra forma de hacerlo.
Realmente no necesitas macros, con la función de concatenar y usando tablas dinámicas lo obtienes, ganas en versatilidad, no te limitas y el tiempo es de 1 minuto.

No obstante te hice las macros, son códigos muy sencillos, de hecho el grabador de macros te lo hace, sólo depuré el código de la tabla dinámica.

Si en determinado momento tu pantalla se pone en "negro" no te alarmes eso se debe a la instrucción Application.ScreenUpdating=False. Deja que termine y te da los resultados.
Los 6816 corresponden a las filas que tienes en blanco. En el módulo te dejo explicación.

Enlace para que lo descargues:
https://www.dropbox.com/s/54llcsbfxe9ijwv/Dgiufre-Concatenar%20y%20repetidos%20con%20T.Din%C3%A1mica.zip?dl=0

Por favor me avisas en cuanto descargues y pruebes, lo eliminaré de mi cuenta de Dropbox.

Saludos
Ignacio Téllez

Igtelo

avatar
Resuelto, se cierra por abandono y se eliminó el archivo del enlace.

Ignacio Téllez

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.