Saltar al contenido

Macros para pegar datos de hoja a hoja correlativamente


jechulandia

Recommended Posts

publicado

Hola amigos de ayuda excel tengo un pequeño problemita, tengo un libro que se llama copiar que lo uso de ejemplo ,en la hoja1 celda A1 y B1 escribo datos y en esta misma hoja tengo un macros asociado a un boton que copia los datos de la celda A1 y B1 en la hoja2 del mismo libro , pero lo que pasa es que el problema ocurre cuando mando datos nuevos estos se sobreescriben en el anterior ya pegado, lo que quisiera es que se pegue pero debajo del ultimo pegado. No se si el problema ocurra aca :

miFila = Sheets("hoja2").Range("A65536").End(xlUp).Row + 1

esta linea deberia hacer que se pegue debajo luego probe con esta :

miFila=Sheets("hoja2").

Range("A"&Rows.Count).End(xlUp).Row + 1

Les dejo mi ejemplo para una mejor guia.

copiar.rar

publicado

Hola.

prueba con esta macro:

Sub copiar()
Dim ul As Long
ul = Hoja2.Range("A" & Rows.Count).End(xlUp).Row
Hoja2.Select
Range("A" & ul + 1) = Hoja1.Range("A1")
Range("B" & ul + 1) = Hoja1.Range("B1")
Hoja1.Select
Range("A1:B1") = ""

End Sub

Un saludo.

publicado

Aquí otra forma muy similar.

[COLOR=#000080]Sub[/COLOR] CopiarLimpiar()
'obtener ultima fila con datos de la tabla
[COLOR=#000080] Dim[/COLOR] miFila [COLOR=#000080]As Integer[/COLOR]
'considerando que la col A tendrá datos . + 1 para obtener la primer fila libre.

[COLOR=#000080] If[/COLOR] Sheets("hoja2").Range("A1") = [COLOR=#000080]Empty Then[/COLOR]

    miFila = 1

[COLOR=#000080]     Else[/COLOR]

    miFila = Sheets("hoja2").Range("A" & Rows.Count).End(xlUp).Row + 1

[COLOR=#000080] End If[/COLOR]

'selecciona hoja con datos a copiar
'primer dato en primer col
Sheets("hoja1").Select
ActiveSheet.Range("A1").Copy Destination:=Sheets("hoja2").Cells(miFila, 1)
'segundo dato en col B
ActiveSheet.Range("B1").Copy Destination:=Sheets("hoja2").Cells(miFila, 2)
'así con cada dato
'si los datos están en 1 fila utilizar 1 sola instrucción indicando el rango completo para copiarlo en la col 1

'limpiar celdas
ActiveSheet.Range("A1") = ""
ActiveSheet.Range("B1") = ""
'así con todas las celdas
End Sub

Es una modificación de tu código.

publicado

Ups muchachos tuve un error ,en mi original tengo los datos uno debajo del otro(Verticalmente) y esos datos debo pasarlos horizontal a mi hoja 2.

Si fueran tan amables porfavor estoy utilizando el primer codigo que me dejaron .

publicado

Hola.

tendrias que espeficicar que casillas de la hoja1 estan en vertical, suponiendo que fueran A1 y A2 el codigo te quedaria así:

 Sub copiar()
Dim ul As Long
ul = Hoja2.Range("A" & Rows.Count).End(xlUp).Row
Hoja2.Select
Range("A" & ul + 1) = Hoja1.Range("A1")
Range("B" & ul + 1) = Hoja1.Range("A2")
Hoja1.Select
Range("A1:A2") = ""
End Sub 

Un saludo.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.