Macro para unir valores de columnas en otra hoja

Tengo un problema y de verás que no se como solucionarlo.
Necesito una macro que me una los valores de distintas columnas a una sola de otra hoja.
El mayor problema lo tengo en que la hoja de origen en distintas ocasiones tienen distinta longitud, con lo que necesitaría que por ejemplo me hiciera esto:
Cogiera los valores de B2, C2, D2, E2, F2 y lo copiara en C3 de hoja2
A continuación cogiera B11, C11, D11, E11, F11 y lo copiara en C4 de hoja2
y así sucesivamente, saltando de 9 en 9, hasta que llegará a un punto en el que al buscar en hoja1 ya no encontrara nada.
Espero que me puedan ayudar.
Muchas gracias!

1 respuesta

Respuesta
1
Ahora la macro original está ajustada para este ejemplo.
Se recorre la col B y si existe valor se copia la fila hasta col F (col 6)
Todos estos parámetros podes ajustarlos modificando las variables según comentarios en rutina:
Sub copiado()
filalibre = Sheets("Hoja2").Range("A65536").End(xlUp).Row + 1 'busca la primer fila libre en destino
For i = 2 To 65536 Step 9   'salta cada 9 filas
If ActiveSheet.Cells(i, 2) <> "" Then 'controla col B
'copia rango B:F en col C de la hoja 2
ActiveSheet.Range(Cells(i, 2), Cells(i, 6)).Copy Destination:=Sheets("Hoja2").Cells(filalibre, 3)
filalibre = filalibre + 1
End If
Next
'repetir para la col C   -OPCIONAL
filalibre = Sheets("Hoja2").Range("B65536").End(xlUp).Row + 1
'siguen las lineas hasta el next , comparando por (i,3) y copiando en cells(filalibre,2)
Un millón de gracias por contestar.
Me surge un problema. He estado probando y hace exactamente lo que comentas, pero necesitaría que la fila que copia fuera toda en una misma celda. Te pido disculpas si tal vez no me expliqué bien en un principio.
Te pongo un ejemplo de lo que necesito.
Pongamos que al recorrer la hoja1 en la columna B encuentra en B2 el parámetro "Pedro". En C2 "Antonio". En D2 "Garcia". En E2 "Diaz". Etc..
Bien, pues necesitaría que en la hoja2 en la celda C3 apareciera "Pedro Antonio García Diaz"
De la forma actual según he probado lo copia todo perfectamente en toda la hoja pero lo pega en columnas separadas.
Muchísimas gracias Elsa, de verás.
Aquí va el ajuste... le agregué un espacio entre celda y celda
Sub copiado()
Dim cadena As String
filalibre = Sheets("Hoja2").Range("A65536").End(xlUp).Row + 1 'busca la primer fila libre en destino
For i = 2 To 65536 Step 9 'salta cada 9 filas
If ActiveSheet.Cells(i, 2) <> "" Then 'controla col B
'copia rango B:F en col C de la hoja 2
col = 2
While col <= 6 'hasta la col F
cadena = cadena & ActiveSheet.Cells(i, col) & " "
col = col + 1
Wend
Sheets("Hoja2").Cells(filalibre, 3) = cadena
cadena = ""
filalibre = filalibre + 1
End If
Next
'repetir para la col C -OPCIONAL
filalibre = Sheets("Hoja2").Range("B65536").End(xlUp).Row + 1
'siguen las lineas hasta el next , comparando por (i,3) y copiando en cells(filalibre,2)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas