Actualización de posición de celda al insertar filas

Tengo una consulta y espero que pueda tener una solución con alguna fórmula o quizás con alguna macro.

Tengo una hoja (N1), que en la celda E10 jala un dato de otra hoja (PLA1) celda B17, tal como figura en la siguiente imagen:

Este valor me sirve para llenar los datos de una planilla de trabajadores utilizando la función BUSCARV, al copiar el registro que comprende desde la fila 10 hasta la 18, se copia la fórmula que está en la celda E10 en la celda E19; por lo tanto la fórmula que era ='PLA1'!B17 se convierte en ='PLA1'!B26, lo que yo quiero es que de ='PLA1'!B17 pase a ='PLA1'! B18, que es el valor que sigue en la hoja =PLA1, Se agradece por la atención.

Con el apoyo de un experto (Dante)se puso la siguiente formula:

=INDIRECTO("'pla1'!B" &16+(FILA(A9)/9))

Copia la fórmula a E19, te debe quedar así, es el equivalente a 'PLA1'! B18:

=INDIRECTO("'pla1'!B" &16+(FILA(A18)/9))

Al poner esta fórmula consigue lo solicitado, pero al insertar una nueva fila o más filas en la hoja 'PLA1'! Antes de la celda B17, ósea en las filas del 1 al 17 tengo que modificar la formula a la nueva posición, desearía que esta adopte o actualice a la nueva posición, sin necesidad de estar modificando la formula.

1

1 respuesta

Respuesta
2

H o l a:

Realiza lo siguiente en la hoja "PLA1"

Selecciona la primera celda con código, por ejemplo, suponiendo que el primer código está en la celda B17, entonces en la hoja "PLA1"

1. Selecciona la celda B17,

2. En el cuadro de nombres escribe "dato1" y presiona enter

3. Ahora selecciona la celda B18 y en cuadro de nombres escribe dato2

4. Repite los pasos para asignar un nombre a cada código.


Si son muchos códigos, entonces ejecuta la siguiente macro poner nombre a todos los códigos de la columna "B". La macro va a empezar a poner nombres a partir de la fila 17, ajusta ese número en la macro si los códigos empiezan en otra fila:

Sub Macro6()
'Por.Dante Amor
    n = 1
    For i = 17 To Sheets("PLA1").Range("B" & Rows.Count).End(xlUp).Row
        ActiveWorkbook.Names.Add Name:="dato" & n, RefersToR1C1:="=PLA1!R" & i & "C2"
        n = n + 1
    Next
End Sub

Ahora en tu hoja "N1", pon la siguiente fórmula en la celda E10:

=INDIRECTO("dato" & FILA(A9)/9)

Copia la fórmula y pégala en la celda E19, te debe quedar así:

=INDIRECTO("dato" & FILA(A18)/9)

Utiliza la siguiente macro para crear la fórmula y copiar la fórmula 10 veces, cambia el número 10 por el número de veces que quieras copiar la fórmula:

Sub Macro7()
'Por.Dante Amor
    Sheets("N1").Select
    Range("E10").FormulaR1C1 = "=INDIRECT(""dato"" & ROW(R[-1]C[-2])/9)"
    n = 19
    For i = 1 To 10
        Range("E10").Copy Range("E" & n)
        n = n + 9
    Next
End Sub

Si quieres ejecutar las 2 macros, utiliza la siguiente macro:

Sub Macro5()
'Por.Dante Amor
    Macro6
    Macro7
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas