Tablas vinculadas

Gracias por atenderme,
Mi problema es quiero que en una tabla se vayan reflejando los datos que escribo en una primera tabla en otra hoja, hasta ahí todo muy fácil.
El problema es que la tabla en la que escribo los datos tiene siempre el mismo formato y no me es necesario guardarla, si en cambio la segunda en la que se recoge un resumen en cada fila de los datos que he introducido en la primera.
Resumiendo como puedo meter datos en una tabla1, que se queden como resumen en la tabla2, y que cada vez que entre en el archivo la tabla1 esté vacía, pero la tabla2 permanezca con un histórico de los datos que he ido metiendo con anterioridad.

1 Respuesta

Respuesta
1
La macro que te adjunto hace que cuando la ejecutes copia todo lo que tengas en la Hoja1 a partir de la celda A2 (supuse que en la fila 1 están los títulos que no los querrás copiar) en la Hoja2 a partir de la última celda con datos, hasta que encuentre una celda vacía.
Podes modificar la celda de inicio o el número de hoja de acuerdo a tus necesidades.
Sub ActualizaHoja()
' Macro grabada el 20/05/03 por EMM*
Sheets(2).Select 'hace referencia a la Hoja2 a donde pegará los datos
Range("A2").Select 'revisa la columna A, hasta que encuentre 1 vacía
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
fila1 = ActiveCell.Row
Sheets(1).Select 'hace referencia a la Hoja1 de donde copiará los datos
Range("A2").Select
While ActiveCell.Value <> ""
Selection.EntireRow.Cut
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(fila1, 1) 'pega a partir de la col A
fila1 = fila1 + 1
ActiveCell.Offset(1, 0).Select
Wend
Application.CutCopyMode = False
End Sub
Habrás notado que cuando termina de ejecutar la macro ya estará la Hoja1 vacía. Si necesitás que recién la vacíe cuando se vuelva a abrir el libro avisame que modificamos eso.
¿Dónde copiar la macro? Con Alt+F11 (o menú Herramientas/Macro/Editor) se abre la ventana del Editor. Ahí vas al menú Insertar / Módulo y en la ventana a la derecha la copias.
Podes crear un atajo de teclado, yendo a Herramientas/Macro/Macros. Seleccionala y con Opciones introducí una tecla (por ejemplo k). Cerrá y ahora podes ejecutarla presionando juntas las teclas Ctrl y k.
Espero te sirva y si es así por favor NO olvides finalizar la consulta.
De nuevo muchisimas gracias;
Ya he resuelto el problema, la macro la he dejado así:
Sub ActualizaHoja()
' Macro grabada el 20/05/03 por EMM*
Sheets(2).Select
Range("A2").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
fila1 = ActiveCell.Row
Sheets(1).Select
Range("A2").Select
While ActiveCell.Value <> ""
Selection.EntireRow.Cut
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(fila1, 1)
fila1 = fila1 + 1
ActiveCell.Offset(1, 0).Select
Wend
Application.CutCopyMode = False
End Sub
Pero tengo un nuevo problema (y espero que el último, para no molestarte más):
1)La tabla1 donde metemos los datos que más tarde borraremos, tienen las celdas a coger la información salteadas; supongamos que una es la A2, otra la B4 y la última la F7, como podríamos hacer que se pegara en la tabla2 (esta si toda seguida, por ejemplo que empezara en la C5, D5, E5).
2)Me gustaría ya que me das la opción de:
"Si necesitás que recién la vacíe cuando se vuelva a abrir el libro avisame que modificamos eso. "
Que me lo pusieses en otro sitio por si me es más adecuado el resultado. Así tendría las dos opciones...
Por lo demás es perfecta. Gracias
Muchísimas gracias por contestar...
Pero tengo algún problemilla:
1) Al ejecutar me da error de compilación / error de sintaxis en:
Sheets(2). Select 'hace referencia a la Hoja2 a donde pegará los datos
Y no sigue más, no sé si luego habrá algún error más.
2)Me gustaría ya que me das la opción de:
"Si necesitás que recién la vacíe cuando se vuelva a abrir el libro avisame que modificamos eso. "
Que me lo pusieses en otro sitio por si me es más adecuado el resultado. Así tendría las dos opciones...
Muchísimas gracias de nuevo, te estas ganando el "Sobresaliente cum laude"
Suerte que has encontrado la falla, es porque escribo las respuestas en Word y al pegarlas en el sitio algunos caracteres (como el espacio con Tab o comillas) se distorsionan.
Ayyyyyyy...¿Por qué los usuarios no dicen todo lo que quieren hacer? :-)
En la primer pregunta hablas de ubicar los datos en filas, ahora dices en las celdas C5, D5, E5. Si querés a partir de la columna C cambiá la línea que tenés igual a ésta:
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(fila1, 3)
Fíjate que antes decía 1: era para la col A pero si querés en la C será 3.
Tampoco sé cuántas celdas son las que vamos a copiar. Si son pocas y cambiantes, podemos pedirlas con Inputbox. Pero si son siempre las mismas podemos guardarlas ya como dato fijo.
Estas 2 cuestiones por favor confirmámelas.
Con respecto al 2do. Punto, para que se borren los datos recién al abrir el libro y no a medida que copiamos en la Hoja2 vamos a hacer lo siguiente:
En la macro que ya tenés, hay que cambiar la línea que dice:
Selection. EntireRow. Cut por esta otra:
Selection. EntireRow. Copy
Y vamos a agregar otra pequeña rutina desde el Editor seleccionando ThisWorkbook.
Allí copiá lo siguiente:
Private Sub Workbook_Open()
Worksheets("Hoja1").Select
Cells.Select
Selection.ClearContents
End Sub
Solo debes reemplazar donde dice Hoja1 por el nombre de tu hoja.
Buenas:
No puedo confirmarte exactamente las casillas que van a ser, pero si sé que van a ser 5 ó 6,(dependerá de un formato de factura que todavía no tengo). La buena noticia es que vamos a suponer que por ejemplo estamos hablando de unas celdas determinadas, así yo aprendo y sólo tengo que cambiar el nombre o numeración de las celdas; supongamos que me interesan:
B3,D5,D8,F2,F7.
Lo que esta claro es que de momento mi consulta se refiere siempre a las mismas celdas, ya que aunque de momento no sé cual son exactamente, siempre se van a referir a las mismas, porque como te indique el formato de factura va a ser siempre el mismo.
Lo del inputbox no he terminado de entenderlo, si me lo puedes explicar de las dos formas te lo agradezco (no es necesario, sólo que me gusta aprender.)
Donde meto la última rutina:
Private Sub Workbook_Open()
Worksheets("Hoja1").Select
Cells.Select
Selection.ClearContents
End Sub
No sé si al final... ¿o dónde?
Gracias anticipadas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas