Cortar fila de una hoja y pegar en otra hoja en la siguiente libre

Y feliz año!

Tengo un excel con 2 hojas, una con datos de pedidos antiguos y otro con datos de pedidos actualizados.

Quiero hacer una macro que automáticamente copie la fila de los pedidos nuevos de la hoja 2 en la hoja 1 (al final), es decir añadiendo los pedidos nuevos a partir de la primera fila vacía.

La macro tendría que hacer estos pasos:
1.-En la hoja 1, copia el valor de la columna A de la ultima fila con datos, es decir A2
2.-Busca el valor copiado en la hoja 2 (está en A1).
3.-Copia todas las filas siguientes al valor encontrado, es decir las filas 2 y 3 de la hoja 2 y las pega en la fila 3 de la hoja 1 (la primera celda libre)

Ejemplo:

Hola 1:

(A) (B) (C) (D)

Nº pedido Nombre Cantidad Precio

Fila 1 2121212 Pepe 6 unidades 12000€

Fila 2 23232323 Ramón 5 unidades 60000€

Fila 3

Fila 4

Hoja 2

(A) (B) (C) (D)
Nº pedido Nombre Cantidad Precio
Fila 1 23232323 Ramón 5 unidades 60000€

Fila 2 66666 Alberto 3 unidad 200€
Fila 3 0101010 Greice 5 unidades 460€

La macro copiarías las filas 2 y 3 en la hoja 1 (filas 3 y 4)

1 respuesta

Respuesta
1

No se si me ha quedado muy clara la explicación, pero prueba este código:

Option Explicit
Sub Macro1()
Dim i As String
Sheets("Hoja1").Select
Range("a1").Select
Selection.End(xlDown).Select
i = ActiveCell.Value
Selection.Copy
Sheets("Hoja2").Select
Cells.Select
Selection.Find(What:=i, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Select
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Hoja1").Select
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
End Sub

Ya me dirás, :)

Funciona bien, excepto una cosa. De la (hoja 2), solo copia 3 columnas a la (hoja 1).

Por ejemplo de:

HOJA 2

A | B | C | D | E |

dato1 dato2 dato3 dato4 dato5

Solo copia las columnas A,B y C, cuando tendría que copiar hasta la E

Ya se lo que pasa, si alguna de las columnas están bacías deja de copiar las demás,

Es decir, si por ejemplo la C1 no tiene nada, se para ahí y copia solo A1 y B1.

¿Como puedo arreglarlo?

Si, el método de selección de columnas se paraba si se encontraba una celda vacía.

Te paso el código modificado, ahora siempre seleccionará las 5 columnas.

Option Explicit
Sub Macro1()
Dim i As String
Sheets("Hoja1").Select
Range("a1").Select
Selection.End(xlDown).Select
i = ActiveCell.Value
Selection.Copy
Sheets("Hoja2").Select
Cells.Select
Selection.Find(What:=i, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Select
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
'linea modificada
Range(Selection, ActiveCell.Offset(0, 4)).Select

'*****
Selection.Copy
Sheets("Hoja1").Select
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
End Sub

¿Era esto? :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas