Jump to content
JSDJSD

Insertar formula en rango dinámico mediante macro

Recommended Posts

Hola a todos, estoy intentando insertar una formula para un rango dinámico mediante macro pero no lo consigo, bueno insertarla si pero en realidad no tengo ni idea de como elaborarla dentro de la macro.

En el adjunto que subo pongo un ejemplo en el que inserto una formula mediante macro, pero claro es una formula muy simple, luego por debajo muestro el objetivo que pretendo alcanzar.

Insertar Formula Rango Dinámico con Macro.xlsm

Share this post


Link to post
Share on other sites

Hola

Yo no insertaría fórmulas sino resultados, pero dado tu pedido yo lo haría así:

Private Sub CommandButton2_Click()
Dim uf As Long
uf = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
Range("F" & uf).Formula = "=IF(RC[-5]="""","""",RC[-5]*RC[-3]*(100-RC[-2])/100)"
End Sub

También dale una leída a esto:

https://abrahamexcel.blogspot.com/2018/11/insertar-formulas-con-macros.html

Comentas

Abraham Valencia
https://abrahamexcel.blogspot.com/
Lima, Perú

PD: Hay varias otras formas de hacerlo, por cierto

Share this post


Link to post
Share on other sites

Tienes toda la razón, pero son cosillas nuevas para mi y me gusta probar, muchas gracias por tu respuesta y por supuesto estudiaré el material que me ofreces, podemos dar por Solucionado el tema

Share this post


Link to post
Share on other sites

Producto del aburrimiento de un domingo por la tarde lluvioso.

Inserta la fórmula al introducir datos en la columna A.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address Like "$A$*" And Target.Row > 2 Then
   If Target.Address <> "" Then
      Target.Offset(0, 5).Formula = "=" & Target.Offset(-1, 5).Address & _
                                    "+" & Target.Offset(0, 3).Address & _
                                    "-" & Target.Offset(0, 4).Address
   End If
End If
End Sub

 

Share this post


Link to post
Share on other sites

Sorry! Había un error:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address Like "$A$*" And Target.Row > 2 Then
   If Target(1, 1) <> "" Then
      Target(1, 1).Offset(0, 5).Formula = _
         "=" & Target(1, 1).Offset(-1, 5).Address(False, False) & _
         "+" & Target(1, 1).Offset(0, 3).Address(False, False) & _
         "-" & Target(1, 1).Offset(0, 4).Address(False, False)
   End If
End If
End Sub

 

Share this post


Link to post
Share on other sites

Una más:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address Like "$A$*" And Target.Row > 2 Then
   If Range("A" & Target.Row) <> "" Then
      Range("F" & Target.Row).Formula = _
         "=" & Range("F" & Target.Row - 1).Address(False, False) & _
         "+" & Range("D" & Target.Row).Address(False, False) & _
         "-" & Range("E" & Target.Row).Address(False, False)
   End If
End If
End Sub

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy