Copiar fórmula

Como puedo copiar esta fórmula desde la celda en que se encuentra hasta la ultima (celda vacía) sin abarcar las celdas anteriores es decir si me encuentro en e39 que solamente abarque e40 e41 e42 etc hasta las celda vacía pero que no incluya las celdas anteriores a e39 como e38 e37 e36 etc
Sub Macro2()
'
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 0).Activate
Selection.Offset(0, 0).Activate
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
ActiveCell.Resize(1, 1).Select
Selection.Offset(0, 4).Select
Dim x As Integer
xx = "=+IF(RC[-1]>0,""RET"",""DEV"")"
x = 2
While Range("B" & x) <> ""
Range("E" & x).Select
ActiveCell.FormulaR1C1 = xx
x = x + 1
Wend
End Sub

1 Respuesta

Respuesta
1
Tu macro lo que hace es lo siguiente:Va a la celda A1, luego se desplaza a la última celda escrita de la columna A1, luego se desplaza un celda hacia abajo, y luego cuatro a la derecha. Después de todo ese viaje, declaras x=2, y te vas al rango E2. Conclusión: todo el código anterior no sirve para nada. Cuando quieras probar una macro, ve al código y presiona F8. CAda vez que des a esta tecla, se te coloreará en amarillo una sentencia: la macro se irá ejecutando paso a paso, y así podrás ir viendo qué hace cada línea, y descubrir sentencias innecesarias. Pero al grano: el código de tu macro, una vez situado en e2, va rellenando hacia abajo con la fórmula siempre que b sea distinto de nada. La fórmula ya se está copiando hacia abajo, por eso no entiendo tu aclaración. Quizás lo que quieres es que a partir de la celda en que te encuentres en ese momento (Y no desde E2, que es desde la que parte siempre esta macro), rellene la columna. Si eso es lo que quieres, el código es el siguiente:Sub Macro2()
Dim xx
xx = "=+IF(RC[-1]>0,""RET"",""DEV"")"
While ActiveCell.Offset(0, -3).Value <> ""
ActiveCell.FormulaR1C1 = xx
ActiveCell. Offset(1, 0). Activate
Wend
End Sub
Espero haber acertado y ser ésto lo que querías. P.D. El comentario que me pusiste en la última pregunta estaba bien, pero el código aún se puede reducir más si lo pones en una sola sentencia:
Activecell. Offset(-2,1). Activate. (No hace falta que te desplaces primero 2 columnas y luego una fila, puedes hacerlo a la vez)
porque otra vez no vuelvo a entender muy bien lo que quieres: cuando dices "como puedo copiar esta fórmula" supongo que te estás refiriendo a esta:"=+IF(RC[-1]>0,""RET"",""DEV"")". Lo que hace es que si la celda de la izquierda es mayor que cero, el resultado es RET, en caso contrario, es "DEV"
Cuando dices "si me encuentro en e39 que solamente abarque e40 e41 e42 etc", ahí me pierdo del todo, por favor aclarame estos puntos y con gusto te ayudo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas