Insertar Filas

Si saco esto me ponen de director general!...
A ver:
Tengo un archivo excel con distintas hojas de calculo.
En la hoja 1 tengo una tabla con columnas de datos. En la hoja 2 tengo otra tabla que toma algunas de las columnas de datos de la Hoja 1. El Problema es que cuando inserto una Fila en la Hoja 1 para añadir algún valor, la hoja 2 no muestra este cambio. Es decir, quiero que cunado el la Hoja 1 inserto una fila, en la hoja 2 también se inserte. Además, en la Hoja 2 hay columnas, no linkadas con la Hoja 1, que contienen fórmulas. Al insertar una Fila en la H.1, y en consecuencia también en la H.2, la fila insertada en la H2 tendría que tener también las fórmulas de las celdas que tiene encima y debajo.

1 Respuesta

Respuesta
1
Utiliza referencias relativas con INDIRECTO para referirte a las celdas de otras hojas, así cuando insertas filas en cualquiera de ellas solo deberás arrastrar la ultima linea de fórmulas hacia abajo tantas lineas como filas insertadas.
Ejemplo
Si te refieres a la celda A4 de la hoja1
=INDIRECTO("Hoja1!A4")
Así consigues que cuando se inserten filas la celda siga haciendo relación a A4 y tomara el nuevo valor que tome.
Lo único sera que al haber insertado una fila, tendrás que crear una fila más en la hoja resumen.
Enhorabuena por el ascenso
Bueno... de momento no me van a ascender... la solución ha sido buena pero no óptima.
En la Hoja "Resumen", (la llamaremos así a pesar de no ser ningún resumen) también entro datos a mano. Al utilizar la función Indirecto, se me inserta una celda en la celda que tiene la función indirect, hasta aquí bien, el problema es que el resto de la fila no se desplaza, y por lo tanto, aquellas celdas que tienen valores entrados manualmente, quedan atrasados.
Gracias otra vez.
Joan
Eso no puedes hacerlo por fórmulas, hay que hacerlo por código.
Como ejemplo
Sub macro1()
ActiveCell.EntireRow.Select
Selection.Insert
fila = Selection.Row
Sheets("Hoja2").Select
Rows(fila).Select
Selection.Insert
Range("A" & fila + 1 & ":B" & fila + 1).Copy
Range("A" & fila).Select
ActiveSheet.Paste
Sheets("Hoja1").Select
End Sub
Posicionándose en la celda donde se quiere insertar una fila, ejecutar la macro.
Lo que hace es insertar una fila encima de la celda seleccionada, va a la hoja 2, inserta una fila en el mismo sitio que se inserto en la hoja 1, después copia las celdas de las columnas A y B de la fila inferior y las copia en la fila recién insertada y vuelve a la hoja 1.
Tendrás que adecuarla a tus necesidades que serán :
Si en la hoja 2 no empiezan las filas en el mismo numero, sumarle a la variable fila la diferencia, y cambiar el rango de las celdas de donde debe cambiar las fórmulas según tu necesidad.
Perfecto... funciona.
Ahora necesito otra macro que cuando borre una fila en la hoja 1 también me la borre de la dos. De lo contrario las celdas de la tabla 2 que tienen la función Indirect, se actualizan, pero las que tienen valores entrados manualmente quedas desfasadas.
Gracias.
Joan
Sub macro2()
ActiveCell.EntireRow.Select
fila = Selection.Row
Selection.Delete Shift:=xlUp
Sheets("Hoja2").Select
Rows(fila).Select
Selection.Delete Shift:=xlUp
Sheets("Hoja1").Select
End Sub
Posiciónate en una celda de la fila a eliminar y te eliminara esa fila y la misma de la Hoja2
No tienes que poner celda por celda, los rangos se definen como:
Range(celda inicial:celda final)
SI tienes que copiar un rango continuo desde A1 a FJ1 es
Range("A" & fila + 1 & ":FJ" & fila + 1).Copy

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas