Excel Solver

Hola
Mi pregunta es si en solver se puede hacer que una de las restricciones sea variable, es decir que la lea de una tabla previamente escrita y así evitar cambiar la condicionante cada vez que se corre solver
Respuesta
1
Cuando se ejecuta la opción Solver entran en juego 3 variables:
Variable 1: Celda Objetivo.
Variable 2: Valor de la Celda Objetivo.
Variable 3: Celda a Cambiar para obtener el valor de la Celda Objetivo.
Entiendo que tu pregunta es si podemos obtener la Variable 2 de una tabla previamente definida.
Si diseñamos una Macro, cualquiera de las 3 Variables anteriores se puede configurar como variable. Particularmente he diseñado una en la que, mediante una tabla de valores objetivos previamente definida, resuelve el solver para cada uno de los registros:
El diseño del modelo sería el siguiente:
Títulos:
********
B1 ="Variable"
C1 ="Valor Fijo"
D1 ="Valor Objetivo"
F1 ="Tabla Valores Objetivos"
REGISTROS:
**********
C2= 5
C3= 10
C4= 15
C5= 20
....
D2= +C2+B2
D3= +C3+B3
D4= +C4+B4
D5= +C5+B5
....
F2= 25
F3= 100
F4= 225
F5= 400
....
El código de la macro sería el siguiente:
CÓDIGO DE MACRO
***************
Sub Prueba_Solver()
'
' Prueba_Solver Macro
' Macro grabada el 12/06/2003 por cmcaminam
' para AndresSoto en TodoExpertos
'
'Nos posicionamos en el primero de los registros de la tabla
'de valores objetivo predefinidos:
Range("F2").Select
'Ejecutamos un bucle mientras existan datos en la tabla de
'valores objetivos predefinidos (mientras esté rellenada
'las casillas de la tabla de valores objetivo predefinidos:
Do While Not ActiveCell = Empty
'Nos posicionamos en la celda que queremos modificar
'para ejecutar el solver.
ActiveCell.Offset(0, -4).Select
'Introducimos las variables del Solver.
ActiveCell.Offset(0, 2).GoalSeek Goal:=ActiveCell.Offset(0, 4).Value, ChangingCell:=ActiveCell.Offset(0, 0)
'Nos posicionamos en la siguiente línea de la tabla de
'valores objetivos predefinidos para evaluar si tiene o
'no tiene dato.
ActiveCell.Offset(1, 4).Select
Loop
End Sub
Copia este código en un módulo y ejecuta la macro.
Creo que esto resuelve tu pregunta. Si es así, no olvides valorar y finalizar la pregunta.
En caso contrario, inserta un comentario detallando mejor el problema.
¿Te ha quedado alguna duda?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas