Exportar datos de Celdas de una hoja a otra

Hola por favor me podrían ayudar estoy haciendo un sistema de excel y pediría si por favor me ayudarían: tengo una hoja ejem: "datos" donde las celdas b3, c5, f9, se completan por el usuario y al apretar un botón comando este copie los datos los mande a otra hoja denominada "guardar_datos" se copie en linea horizontal desde la celda d2 y si esta llena se pase en la siguiente fila así sucesivamente para crear una base se datos agradezco cualquier ayuda de antemano.

1 Respuesta

Respuesta
1
Hay muchas respuestas aquí relacionadas al copiado de datos. Básicamente necesitas una rutina similar a esta:
Sub copiado()
'x Elsamatilde
'guardar la primer fila libre de la hoja 2
fila2 = sheets("guardar_datos").range("D65536").end(xlup).row +1
'copia de hoja activa a la hoja2, a partir de col D=4
activesheet.range("B3").copy destination:=sheets("Hoja2").cells(fila2,4)
activesheet.range("C5").copy destination:=sheets("Hoja2").cells(fila2,5)  'col E
'repetir con el resto de datos
End Sub
Si esto resuelve tu consulta, no olvides finalizarla. Encontrarás más ejemplos en mi página de descargas.
Gracias por el código fuente tengo algunas dudaspra que se usa d65536 es una curiosidad me pega los datos en otra celda quisiera que el primer daro lo pegue en la celda b5, el segundo en el b6 y que cada ves que pulso el botón se almacene(que se pegue en la siguiente linea por fa si no e smucha molestia
Lo que menciona tu consulta es: '... otra hoja denominada "guardar_datos"se copie en linea horizontal desde la celda d2..'
Por eso utilizo:
activesheet.range("B3").copy destination:=sheets("Hoja2").cells(fila2,4)
Donde fila2 es la primer fila libre y 4 es la col D. Si necesitas que sea B cambialo x 2
Para obtener la primer fila libre se puede ir desde arriba hacia abajo (xlDown) o desde abajo hasta arriba (xlup), por eso tomé la fila 65536. Como esto me da la fila del último dato, le sumo 1 para obtener la primer libre.
Sheets(..).Range("D65536").End(xlup) +  1
En mi sitio de macros encontrarás otras instrucciones similares.
Hechas las aclaraciones, solo resta que lo apliques y no olvides finalizar la consulta.
Bueno vi algunos de tus ejemplos y ya tengo esto:
Sub CopiarLimpiar()
'obtener ultima fila con datos de la tabla
Dim miFila As Integer
miFila = Sheets("HojaPedidos").Range("D65536").End(xlUp).Row - 7
'selecciona hoja con datos a copiar
'primer dato en primer col
Sheets("HojaPedidos").Select
ActiveSheet.Range("b3").Copy Destination:=Sheets("ListaDePedidos").Cells(miFila, 1)
'segundo dato en col B
ActiveSheet.Range("c7").Copy Destination:=Sheets("ListaDePedidos").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("b3") = ""
ActiveSheet.Range("c7") = ""
'así con todas las celdas
Pero el probloema es que no acumulándose la información.
Me ayudarías por favor
Hay algunos puntos que no te han quedado claros.
Estás obteniendo la primer fila libre de la HojaPedidos, cuando en realidad la necesitas para la hoja ListadePedidos.
La macro te debe quedar así:
Sub CopiarLimpiar()
'obtener ultima fila con datos de la tabla
Dim miFila As Integer
'considerando que la col A tendrá datos . + 1 para obtener la primer fila libre.
miFila = Sheets("ListaDePedidos").Range("A65536").End(xlUp).Row +1
'selecciona hoja con datos a copiar
'primer dato en primer col
Sheets("HojaPedidos").Select
ActiveSheet.Range("b3").Copy Destination:=Sheets("ListaDePedidos").Cells(miFila, 1)
'segundo dato en col B
ActiveSheet.Range("c7").Copy Destination:=Sheets("ListaDePedidos").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("b3") = ""
ActiveSheet.Range("c7") = ""
'así con todas las celdas
End Sub
Sdos. Si te quedó claro y solucionado, no olvides finalizar la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas