Método de sustitución con fórmula de por medio

¿Cómo lo resuelvo con alguna macro que me copie como valor el resultado de la fórmula de la cual cuyo valor luego se debe incluir en la misma fórmula?

Ejemplo:

El valor 369 dentro de la fórmula en imagen del Paso 2 fue el valor resultante de la fórmula del Paso 1, que luego se integra dentro de fórmula como valor y da un nuevo resultado 389.

La idea es por ejemplo, usar un botón en donde al dar click me pase el valor resultante de la fórmula a valor dentro de si misma...

Esto método lo necesito en 6 fórmulas.

Gracias!

Respuesta
6

Para entender lo que necesitas prueba con la siguiente macro y dime si es lo que quieres.

La macro va a poner la fórmula en la celda E8, tal y como está en tu ejemplo.

Sub ponervalor()
  Range("E8").Formula = "=(" & Range("E6").Value & ")" & "+ C8"
End Sub

Nota: En la fórmula, no es necesario que pongas el "+" después del "=", con el símbolo "=" es suficiente.

Hola Dante, es la idea que necesito. Sólo hago algunas aclaraciones para entender la macro y me quede adapatada directamente.

Cuando me refería a que aplique en 6 fórmulas al mismo tiempo, son similares salvo que el valor de partida es diferente dentro de cada una por ello dan resultados distintos. Y lo que deben tener en común es que todas sumen la referencia a la celda donde está el 15 y se calculen sin moverse a otra posición al dar click.

En mi ejemplo de inicio lo hice en 2 veces para que se comprenda la idea.

Ahora debería quedar algo así:

Muchas gracias por la ayuda y aguardo tus comentarios.

Saludos.

[Perdona, pero sigo sin entender.

Primero, el valor inicial "354" que está en la celda E6, de dónde sale?

Segundo, 369 + 15 = 384. eso me queda claro.

¿Pero cómo llegas a 5015?

De dónde sale el 48, ¿el 82 y el 815?

Podrías poner las 6 fórmulas, es decir, qué fórmula tienes en E8, en E10, en G6, G8 y G10.

Y yo te ayudo con la macro.

Las formulas son las mismas en todos los casos, sólo cambia el valor inicial en cada una. Este valor inicial hoy lo colocaba de manera manual.

Es decir, si utilizo la Macro, a este valor inicial solo necesito escribirlo de manera manual una sola vez dentro de cada fórmula, y luego la macro hará su función actualizando al nuevo valor resultante y así sucesivamente. 

En el ejemplo los valores serían los siguientes:

Respecto al15 en C6 es un dato que va cambiando de manera manual, pero me sirve que la macro solo tenga la referencia a la celda del C6 independientemente del número


Olvidemos un poco las 6 fórmulas. Lo que haga la macro para una fórmula lo va a repetir 6 veces con las otras fórmulas.

Solamente quiero entender qué necesitas para una fórmula.

Si ejecutas la macro la primera vez, te va a poner:

354 + 15

= 369

Si ejecutas otra vez la macro quieres en la misma celda esto:

369 + 15

= 384

Si ejecutas otra vez la macro quieres en la misma celda esto:

384 + 15

= 399

Pregunta: te interesa tener en la celda la fórmula

¿=384 + 15 o simplemente en la celda el resultado 399?

Si ejecutas nuevamente la macro, la macro le va a sumar a 399 + 15 y pondrá en la celda el resultado 414, sin necesidad de poner la fórmula.

Es correcta tu interpretación. Por cada click la macro va a ir incrementando el valor.

Respuesta: Sí me interesa tener en la celda la fórmula, ya que el valor en la celda C6 puede cambiar y dejando la fórmula tambien cambiará el valor final. 

Lo hice con () para entender la macro en caso futuro de necesitar editarla.

=(384) + 15. Debe mantenerse.

Saludos.

Solamente un detalle.

Si la celda E8 está vacía, entonces la macro toma el valor inicial de L3 y le suma el valor de C6.

Si E8 no está vacía significa que debe incrementar.

¿Es correcto todo lo anterior?

No sería correcto ya que todas las celdas siempre tendrán un valor, jamas estarán vacías. Y todas tienen sus valores iniciales ya determinados de origen. Lo único que comparten es la suma del valor de C6.

Y todas tienen sus valores iniciales ya determinados de origen.

De acuerdo con lo anterior, prueba la siguiente macro:

Sub PonerFormulas()
  'Por Dante Amor
  Dim c As Range
  For Each c In Range("E6,E8,E10,G6,G8,G10")
    c.Formula = "=(" & c.Value & ")" & "+ C6"
  Next
End Sub

1 respuesta más de otro experto

Respuesta
1

Viendo que no se están entendiendo, te hago llegar mi punto de vista.

Empezando con que necesitas: usar un botón en donde al dar click me pase el valor resultante

Esto me lleva a pensar que quizás quieras actualizar una celda por vez, y no todo el rango... o sea que no necesitas un botón sino que se puede utilizar el evento Selection de la hoja.

Si es así, coloca el siguiente código en el objeto HOJA donde se encuentren estos datos.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'x Elsamatilde
'por cada click en alguna celda del rango
If Target.Count > 1 Then Exit Sub
If Not Intersect(Range("E6, E8, E10, G6, G8, G10"), Target) Is Nothing Then
    If Target = "" Then
        'busca el valor original
        Target.Formula = "=VLOOKUP(" & Target.Offset(0, -1).Address & ",K:L,2,FALSE)+C6"
    Else
        Target.Formula = "=" & Target.Value & " + C6"
    End If
    Target.Offset(1, 0).Select  'hacia abajo
    'target.Offset(0,1).Select  'hacia la derecha
End If
End Sub

Lo primero que considero es si es la 1ra vez, en ese caso tiene que tomar el valor original + el de la celda C6 con la fórmula que se observa en la imagen superior. Y si ya tiene un valor, se acumulará con el contenido de C6 con la fórmula de la imagen inferior.

Como se ejecutará cada vez que hagas clic en alguna de las 6 celdas, para borrarlas selecciona 2 o más celdas,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas