Para DANTE Amor. Macro que me permita introducir valores dentro de una Ecuación insertada en hoja de excel

Muy buen Día, DAM.

En esta oportunidad solicito que me ayudes en el siguiente problema.

Necesito introducir una Ecuación, hasta allí aparentemente bien, solo que no encuentro la manera de introducir dinámicamente los valores que van cambiando de acuerdo a los valores introducidos.

En la imagen siguiente está identificada como número 1. La fórmula de ecuación como es en original; y en el número 2. Está como espero que se vaya reemplazando de acuerdo a los valores resultantes en cada una de las diferentes celdas.

De antemano, muchas gracias y quedo atento por si se te presenta alguna duda al respecto.

Cuándo me refiero a "dinámicamente" es a que los valores varían pero no el rango de la celda de donde proviene dicho valor, necesito adaptarlo a varias fórmulas de ecuaciones, pero con éste solo ejemplo creo podría hacer las demás.

Saludos y ¡FELICES FIESTAS!

1 respuesta

Respuesta
1

Para este caso la fórmula sería la siguiente:

=F5+((((1+H7)^H5)-1)/(H7*((1+H7)^H5)))+((H5*(H5-1)*(H10^2))/(H8^(1/H5)))

Para fórmulas complejas puedes utilizar el complemento de excel: Solver

En este enlace puedes ver cómo instalar el complemento Solver

http://office.microsoft.com/es-mx/excel-help/definir-y-resolver-un-problema-con-solver-HP010342416.aspx 

Puedes consultar un ejemplo de solver: http://exceltotal.com/utilizando-excel-solver/ 

En fin, puedes consultar ejemplos de solver en la red.


Si te sirve seguir haciendo la fórmula directamente en excel, también es válido.


Para calcular la raíz n de un número, ejemplo

para buscar la raíz cúbica de 8 

=8^(1/3)

referencia:

http://support.microsoft.com/kb/28572/es 


No olvides valorar la respuesta.

DAM, muchas gracias por responder, pero lo que necesito es poder presentar las fórmulas así como se ven en la gráfica y no el total general, la parte de solución planteada por tí, es correcta; solo que no sé automáticamente como se introducen o sustituyen los valores dentro de cada ecuación, pues excel nos da la posibilidad de introducir esas ecuaciones.

Manualmente se pueden introducir los valores, pero eso es un completo lío.

Espero tus comentarios.

No entiendo esto que pones:

"no sé automáticamente como se introducen o sustituyen los valores dentro de cada ecuación"

En la fórmula que te puse, lo que tienes que cambiar son los datos en las celdas F5, H5, H7, H8 y H10

Tampoco entiendo esto:

"pues excel nos da la posibilidad de introducir esas ecuaciones."

Disculpa, pero ahora ya no entiendo qué es lo que necesitas.

Si quieres la macro, en la variable valor te pone el resultado:

Sub ecuacion()
'Por.Dante Amor
    valor = Evaluate("=F5+((((1+H7)^H5)-1)/(H7*((1+H7)^H5)))+((H5*(H5-1)*(H10^2))/(H8^(1/H5)))")
End Sub

Dam, muy buena tarde, te agradezco el tiempo que inviertes en cada respuesta; disculpa mi insistencia. En la siguiente imagen se encuentran en celdas con fondo Amarillo, los diferentes valores necesarios para realizar la ecuación; en la celda de fondo Negro, está el resultado que me dá luego de ejecutar la macro que me propones, No hay problema en el resultado numérico.

El problema que tengo es que debo obtener como resultado final de la macro como se detalla en la ecuación de más abajo, y que si cambio el valor en alguna de las celdas de fondo amarillo, ese valor sea reemplazado en la fórmula larga que coloco abajo, en la misma imagen, ahora si eso no es posible, te agradecería me lo digas para dejar el tema, pues por ningún sitio de la red he encontrado aún respuesta, pero sé que eres de los mejores y éste reto tiene solución.

Espero me puedas ayudar.

Saludos.

DAM, al seleccionar la fórmula de Ecuación, en la sección de nombre me muestra:

"1 CuadroTexto"; ésto me hace concluir que es editar o modificar un Cuadro de Texto y me gustaría saber entonces como puedo vincular una celda a un cuadro de texto
para que cuando me cambie el valor de esa celda, se vea reflejado en el texto.

Al cambiar manualmente los valores utilizando la Grabadora de Macros me da un código demasiado extenso, del cuál te coloco un pequeño segmento:

Sub Macro1()
'
' Macro1 Macro
'
ActiveSheet.Shapes.Range(Array("1 TextBox")).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Valor=??????*?????+???????????-????????*???+????????????+??????????-????????,?????????????????????=157.732,160813"
Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 113).ParagraphFormat _
.FirstLineIndent = 0
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 5).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(6, 1).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(7, 6).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(13, 1).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(14, 1).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(15, 1).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(16, 1).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(17, 3).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(20, 4).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(24, 1).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(25, 1).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(26, 4).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(30, 1).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(31, 3).Font
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "Cambria Math"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 24
.Italic = msoTrue
.Name = "Cambria Math"
End With

(...)

En lugar de valores me aparecen puros signos de " ? " y al modificarlos en el editor de VB  y pretender ejecutar la misma en la fórmula se me cambian todos los valores por "?" y me marca error.

Esto:

"1 CuadroTexto"

Es el nombre de una imagen que se llama cuadro texto.

Si quieres vincular el contenido del "1 CuadroTexto" a una celda, solamente tienes que poner en el cuadro de fórmulas = y la celda, ejemplo:


En la macro le estás diciendo que te ponga ?, en esta parte:

"Valor=??????*?????+???????????-????????*???+????????????+??????????-????????,?????????????????????=157.732,160813"

Si quieres que te ponga el valor de la celda, intenta con esto:

ActiveSheet.Shapes.Range(Array("1 CuadroTexto")).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Valor=" & [F5] & "*(1+)" & [H7] & ")" & [H5] & "-1"

Para que hagas la prueba de lo que esto enviando revisa cómo se llama tu cuadro de texto: así "1 textbox" o así "1 CuadroTexto"

Para agregar los valores de celdas a tu texto, nota como pongo los textos de la fórmula entre comillas :

"Valor="

Y los valores de la celda los pongo entre &[ ]&, ejemplo:

& [F5] & 

Y después otro texto

"*(1+)"

y luego otra celda

& [H7] &

Este ejemplo que te estoy poniendo es para la primera parte de la fórmula, lo que estás pidiendo es que la macro prácticamente dibuje una fórmula con rayitas con símbolos, con tipo de letra, etc.

No creo que excel sea la herramienta adecuada para hacer ese tipo de dibujos. Pregunta en el tema de Matemáticas si tienen un software para tales efectos o cómo podrían resolver esos dibujos utilizando excel.

DAM, infinitas gracias, tus orientaciones como siempre son bastante acertadas y la verdad es lo que quería obtener en Ayuda un inicio, se que no es una tarea fácil pero tengo de dónde iniciar para llegar a la meta.

Felices Fiestas para tí y todos los tuyos y espero poder seguir contando con tu ayuda incondicional como siempre, un fraternal abrazo y los mejores deseos de prosperidad para el 2015.

Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas