Macro para crear campo común

Hola ElsaMatide !
Tengo los estado de cuenta de 3500 proveedores que he bajado de un archivo de texto, que proviene de un program de Contabilidad llamado COMPAQ.
La primera Linea es el numero de cuenta, quisiera me indicaras como puedo hacer para la priner linea ese estado de cuenta se copie al lado izquierdo, en tanto no encuentre el fin que es un renglón en blanco. Y vuelva a repetir el procedimiento hasta no encontrar nada en la base de datos
Lo que pretendo de este archivo de texto es poderlo manipular en una tabla dinámica y lo que necesito es un campo común.
Así es como esta el arcchivo
204-001-000 Jose Perez Lopez
25-2-05 12 Su pago 1200.00
25-2-05 12 Su pago 1200.00
25-2-05 12 Su pago 1200.00
25-2-05 12 Su pago 1200.00
204-002-000 Manuel Ortiz
25-2-05 12 Su pago 1200.00
25-2-05 12 Su pago 1200.00
25-2-05 12 Su pago 1200.00
25-2-05 12 Su pago 1200.00
Así como como pretendo que sea :
204-001-000 204-001-000 Jose Perez Lopez
204-001-000 25-2-05 12 Su pago 1200.00
204-001-000 25-2-05 12 Su pago 1200.00
204-001-000 25-2-05 12 Su pago 1200.00
204-002-000 204-002-000 Manuel Ortiz
204-001-000 25-2-05 12 Su pago 1200.00
204-001-000 25-2-05 12 Su pago 1200.00
204-001-000 25-2-05 12 Su pago 1200.00
Como menciones necesito un campo común y me gustaría me indicaras que código podía utilizar, porque hacerlo manualmente es prácticamente imposible ya el archivo contiene 3500 proveedores y una aproximación a 35,000 registros lo es prácticamente la mitad de una hoja de excel.
Por la atención que prestes al presente mil gracias.
Jose Medina Maciel

1 respuesta

Respuesta
1
La rutina que te adjunto coloca la parte del campo común en una col delante de tus datos.
Inserta para eso una col delante para que te quede la A libre y tus datos en la B, a partir de B2
Copia la rutina en un módulo y espero resuelva tu problema
Saludos
Elsa
Sub CampoComun()
Dim miCampo As String
Dim cliente As Integer, ctrlfin As Integer, largo As Integer
'asumo que los datos están en la col B y se agregará en col A el campo común
'asumo que el primer registro con datos está en A2
Range("A2").Select
ctrlfin = 0
While ctrlfin = 0
cliente = 0
'recorre un grupo
While ActiveCell.Offset(0, 1) <> ""
If cliente = 0 Then
'significa que es el primer registro del grupo
ActiveCell.FormulaR1C1 = "=+FIND("" "",RC[1],1)"
largo = ActiveCell.Value
miCampo = ActiveCell.Offset(0, 1).Value
ActiveCell = Mid(miCampo, 1, largo)
miCampo = ActiveCell.Value
cliente = 1
Else
'agrega el mismo campo común
ActiveCell.Value = miCampo
End If
'pasa al registro siguiente
ActiveCell.Offset(1, 0).Select
Wend
'repetir esta línea por cada línea de separación entre grupos.
'en este ejemplo se asume 1 línea en blanco entre grupos.
ActiveCell.Offset(1, 0).Select
'si encuentra otra línea en blanco significa que terminó la tabla
If ActiveCell.Offset(0, 1).Value = "" Then
ctrlfin = 1
End If
Wend
End Sub
*** Más ejemplos y descargas en: http://es.geocities.com/lacibelesdepunilla/macros
HOla Elsa !
He recibido con mucho gusto tu respuesta, ya lo puse en marcha y funciona a las mil maravillas.
Como siempre rapido y sobre todo muy eficiente. En verdad agradezco tu tiempo y dedicación
REcibe un fuerte abrazo, desde Guadalajara, Jalisco, Mexico.
Jose Medina

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas