Vous êtes sur la page 1sur 2

Sensibilidad de un Forward con Solver

Puede descargar el archivo de Excel siguiente.


 Replica_Solver.xlsm

No se ve la opción "Convertir variables sin restricciones en no


negativas" al grabar la macro
Desde la versión de Excel 2010 en Solver se ha incluido la posibilidad de marcar o
dejar sin marcar una casilla de verificación que se denomina "Convertir variables sin
restricciones en no negativas".

Para dejar desmarcada esta casilla de verificación desde el código VBA se ha de


añadir a la macro la siguiente línea.
 SolverOptions AssumeNoNeg:=False

Para ver todas las opciones de Solver que se pueden incluir en código VBA ir al
siguiente enlace.
 MSDN

La línea de código anterior se puede poner por ejemplo como línea anterior a la que
ejecuta Solver al final de la macro.

La línea anterior no aparece al ver el código que ha generado la grabadora de macros,


así como no aparecen otras muchas propiedades inherentes al Solver que estamos
ejecutando. Por ejemplo, tampoco aparece la precisión que hemos utilizado, entre
otras opciones.

Si queremos que aparezcan las opciones utilizadas en Solver, lo que tenemos que
hacer mientras grabamos la macro con la grabadora es abrir las Opciones de Solver y
luego cerrarlas. Esto nos genera el código necesario que luego si podremos ver. Entre
todo este código está el siguiente.
 AssumeNonNeg:=True

Este código se corresponde con el hecho de no marcar la casilla de verificación de


"Convertir variables sin restricciones en no negativas".

Veamos el código que he obtenido al abrir y luego aceptar las Opciones de Solver.

Sub Macro3()
SolverOk SetCell:="$G$6", MaxMinVal:=3, ValueOf:=0,
ByChange:="$C$4:$F$4", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOptions MaxTime:=0, Iterations:=0, Precision:=0.0000005,
Convergence:= _
0.0001, StepThru:=False, Scaling:=True, AssumeNonNeg:=True,
Derivatives:=1
SolverOptions PopulationSize:=100, RandomSeed:=0, MutationRate:=0.075,
Multistart _
:=False, RequireBounds:=True, MaxSubproblems:=0,
MaxIntegerSols:=0, _
IntTolerance:=0.1, SolveWithout:=False, MaxTimeNoImp:=30
SolverOk SetCell:="$G$6", MaxMinVal:=3, ValueOf:=0,
ByChange:="$C$4:$F$4", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$G$6", MaxMinVal:=3, ValueOf:=0,
ByChange:="$C$4:$F$4", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
End Sub

SolverFinish KeepFinal:=1
En el vídeo vemos que se añade una línea de código para no tener que estar
aceptando la ventana que nos devuelve Solver al final del proceso. En el vídeo se
pone en español el siguiente código.

SolverResolver resultadoDeseado:=True

Si necesitamos ponerlo en inglés podemos cambiarlo por este otro:

SolverFinish KeepFinal:=1

En el siguiente enlace se comenta este aspecto.

 MSDN.microsoft
Gráfico incremental
El ejemplo utilizado en el vídeo se puede encontrar en la Hoja4 del siguiente archivo.
 excelavanzado_desref.xlsx

Utilizando la capacidad de la función DESREF para crear Rangos dinámicos vamos a


crear el denominado Gráfico incremental. Se trata de un gráfico en el que podemos
elegir de forma sencilla, presionando sobre un control de formulario, cuántos valores
se verán representados en la serie de datos del gráfico.

Conviene entender previamente lo que es un Rango dinámico consultado el siguiente


post.
 Rango dinámico
La sintaxis de la función DESREF es la siguiente.
=DESREF(ref, filas, columnas, [alto], [ancho])

Publicado por Adolfo Aparicio a las 0:07

Vous aimerez peut-être aussi