Buenas tardes, tengo una pregunta sobre como podría optimizar una macro que recorre 300.000 registros y concatena información con el siguiente código:
Sub ConcatenaColumnas()
Dim numzeros As String
numzeros = "0000000000"
Range("A:B").Select
Selection.NumberFormat = "@"
Range("E3").Select
'------------------Columna Validación--------------------------------------------------------------------------------------------
Do While ActiveCell <> "" 'Bucle hasta la celda este en blanco
''de la celda activada retroceder xx números (0, -xx) a la izquierda y escribir fórmula
ActiveCell.Offset(0, -4).FormulaR1C1 = _
Format(ActiveCell.Offset(0, 0), "dd") & Format(ActiveCell.Offset(0, 0), "mm") & Format(ActiveCell.Offset(0, 0), "yyyy") _
& Left(numzeros, 10 - Len(ActiveCell.Offset(0, 3))) & ActiveCell.Offset(0, 3) _
& Left(numzeros, 10 - Len(ActiveCell.Offset(0, 4))) & ActiveCell.Offset(0, 4) _
& ActiveCell.Offset(0, 5) _
& ActiveCell.Offset(0, 6)
ActiveCell.Offset(0, -3).FormulaR1C1 = _
ActiveCell.Offset(0, 2) _
& ActiveCell.Offset(0, 6) _
ActiveCell.Offset(1, 0).Select
Loop
End Sub
El código recorre la celda del rango "e3" validando que tenga información y concatena creando una cadena de texto en el rango (a1), sin embargo ha tardado 12 minutos en cumplir la tarea.
Alguien podría darme una mano para poder optimizar el código, sin recurrir a power bi o pivot?
De antemano muchas gracias.
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Estimados Amigos,
Buenas tardes, tengo una pregunta sobre como podría optimizar una macro que recorre 300.000 registros y concatena información con el siguiente código:
Sub ConcatenaColumnas() Dim numzeros As String numzeros = "0000000000" Range("A:B").Select Selection.NumberFormat = "@" Range("E3").Select '------------------Columna Validación-------------------------------------------------------------------------------------------- Do While ActiveCell <> "" 'Bucle hasta la celda este en blanco ''de la celda activada retroceder xx números (0, -xx) a la izquierda y escribir fórmula ActiveCell.Offset(0, -4).FormulaR1C1 = _ Format(ActiveCell.Offset(0, 0), "dd") & Format(ActiveCell.Offset(0, 0), "mm") & Format(ActiveCell.Offset(0, 0), "yyyy") _ & Left(numzeros, 10 - Len(ActiveCell.Offset(0, 3))) & ActiveCell.Offset(0, 3) _ & Left(numzeros, 10 - Len(ActiveCell.Offset(0, 4))) & ActiveCell.Offset(0, 4) _ & ActiveCell.Offset(0, 5) _ & ActiveCell.Offset(0, 6) ActiveCell.Offset(0, -3).FormulaR1C1 = _ ActiveCell.Offset(0, 2) _ & ActiveCell.Offset(0, 6) _ ActiveCell.Offset(1, 0).Select Loop End Sub
El código recorre la celda del rango "e3" validando que tenga información y concatena creando una cadena de texto en el rango (a1), sin embargo ha tardado 12 minutos en cumplir la tarea.
Alguien podría darme una mano para poder optimizar el código, sin recurrir a power bi o pivot?
De antemano muchas gracias.