.24.05.17
Buenas, Ignacio
La siguiente rutina hace lo que pedís, independientemente de la cantidad del lineas o de números de cheques en cada una de ellas que tengas. Se detendrá cuando encuentre la primera celda vacía.
Entrá al Editor de VBA (Atajo: Alt + F11), allí insertá un módulo (Insertar-Módulo) y pegá el siguiente código:
Sub concatenator()
'---- Variables modificables ----
'=== IGNACIO, modificá estos datos de acuerdo a tu proyecto:
Inicelda = "A3" 'celda donde está el primer registro a concatenar
HojaDest = "Hoja 2" ' Hoja donde dejar las líneas
CeldaDest = "B4" 'celda donde dejar la primera fia concatenada
'---- fin Variables
'
' VBA coding by FeJoAl
'
'---- inicio de rutina:
'
LaFila = 0
With ActiveSheet
Do While Not IsEmpty(.Range(Inicelda).Offset(LaFila))
LaColu = 0
Registro = .Range(Inicelda).Offset(LaFila, LaColu).Value & "|" & .Range(Inicelda).Offset(LaFila, LaColu + 2).Value & " Num Cheque " & .Range(Inicelda).Offset(LaFila, LaColu + 3).Value
LaColu = LaColu + 4
Do While Not IsEmpty(.Range(Inicelda).Offset(LaFila, LaColu))
Registro = Trim(Registro & " " & .Range(Inicelda).Offset(LaFila, LaColu).Value)
LaColu = LaColu + 1
Loop
Sheets(HojaDest).Range(CeldaDest).Offset(LaFila).Value = Registro
LaFila = LaFila + 1
Loop
End With
cont = LaFila
ElMensaje = IIf(cont = 0, "NO SE TRASLADO LINEA ALGUNA", "Se transfirieron: " & cont & " linea" & IIf(cont > 1, "s", "") & Chr(10) & "a la hoja " & HojaDest)
TipoMens = IIf(cont = 0, vbCritical, vbInformation)
ElTitulo = IIf(cont = 0, "NO SE HIZO NADA", "TERMINADO!")
Application.ScreenUpdating = True
MsgBox ElMensaje, TipoMens, ElTitulo
End Sub
Notarás al principio del código unas variables que podrás modificar en caso de que necesitaras cambiarlas.
.
(Buenos Aires, Argentina)
.