Copiar la formula de la celda superior sin estirar

Quisiera saber si es posible que de alguna manera automática se copie una formula en la siguiente celda.

Se que puedo estirar hasta donde yo quiera, pero la planilla en la que estoy trabajando tiene macros que dejan de funcionar si tengo estirada la fórmula.

Por ej:

En la celda K, tengo la formula: =J3-1

En J tengo una fecha y en K necesito restar 1 día

Mi objetivo es que cuando escriba en la fila 4, ya sea en la columna B-C-D... De alguna manera K4 tome la formula de K3 y así sucesivamente.

1 Respuesta

Respuesta
2

Ya recibí tu libro. Ni bien lo tenga revisado te lo devolveré con el ajuste.

Sdos.

Elsa

https://www.youtube.com/c/ElsaMatilde 

¡Gracias! Elsa

Aguardo su sugerencia

Atentamente CSI

Como te comenté por mail, la macro Planing corre bien con hoja protegida, solo que debieras recorrer hasta el fin de la col B en lugar de A.

Ahora, de todos modos te dejo el código para colocar una fórmula en col K, respondiendo a esta consulta. Te puede servir para cualquier otra columna cuando haya un cambio en col J.

Hay 2 modos de hacerlo: arrastrando la fórmula de arriba o colocando directamente en la fila activa. Opté por esta última.

ElseIf Target.Column = 10 And Range("J" & j) <> "" Then
    'Se controla cambios en col J, rellenando la fórmula en col K
    ActiveSheet. Unprotect
    Range("K" & j).FormulaR1C1 = "=RC[-1]-1"
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
End If
End Sub

La hoja se desprotege para colocar la fórmula, porque esa col debiera estar bloqueada. Y luego se vuelve a proteger con las mismas condiciones.

Sdos.

Elsa

Te reitero respuesta enviada x mail:

Al inicio de la macro Planing, estás limpiando las celdas desde la fila 5 hasta el la última ocupada en hoja dic-ene-feb. Que en tu libro sería la fila 41. Y eso incluye la fila 25.

Si siempre el 2do predio será en fila 25, podemos omitir esa fila al momento de ejecutar el bucle, ya que quizás tampoco haría falta el resto de las instrucciones. Sino me lo comentas.

With Sheets("dic-ene-feb")
   For x = 5 To .Range("A" & Rows.Count).End(xlUp).Row
      If x <> 25 Then
        .Range("B" & x & ":CO" & x).UnMerge
        .Range("B" & x & ":CO" & x).Interior.Color = .Range("B" & x).Interior.Color
        .Range("B" & x & ":CO" & x) = ""
      End If
   Next

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas