Cómo crear macros de Visual Basic mediante el uso de Solver de Excel en Excel 97

Seleccione idioma Seleccione idioma
Id. de artículo: 843304 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo describe cómo utilizar Microsoft Excel Solver en Microsoft Excel 97 para crear macros de Microsoft Visual Basic. Microsoft Excel Solver es un complemento de Microsoft Excel.

Además, en este artículo contiene información acerca de cómo crear macros, el diseño de una macro y cómo trabajar con las restricciones de una macro. En este artículo también se explica el algoritmo y métodos que son utilizados por Microsoft Excel Solver. La lista siguiente puede ver todos los temas tratados en el artículo.

INTRODUCCIÓN

En este artículo contiene información acerca de Microsoft Excel Solver.

Más información

Descripción de Microsoft Excel Solver

Microsoft Excel Solver es un complemento Microsoft Excel Solver ayuda a Microsoft Excel determinar el valor óptimo para una fórmula en un determinado celda de destino de una hoja de cálculo de Microsoft Excel. Microsoft Excel Solver ajusta los valores de otros celdas que están relacionados con la celda objetivo mediante el uso de una ecuación. Después de crear una ecuación y definir un conjunto de parámetros o las restricciones de la las variables en la ecuación, Microsoft Excel Solver trata diversas soluciones para llegar a un respuesta que satisfaga todas las restricciones. Microsoft Excel Solver utiliza los siguientes elementos para "resolver" una ecuación:
  • Celda objetivo - la celda objetivo es el objetivo. Es la celda en el modelo de hoja de cálculo que se minimizan, maximiza o definir con un valor determinado.
  • Las celdas cambiantes - celdas cambiantes son las variables de decisión. Estas celdas afecta al valor de la celda objetivo. Estas celdas son puede cambiar por Microsoft Excel Solver para buscar la solución óptima para la celda objetivo.
  • Las restricciones : las restricciones son restricciones en el contenido de celdas. Para ejemplo, una celda en un modelo de hoja de cálculo podrá limitarse a valores enteros, mientras que otra celda podrán limitarse a sea inferior a un valor dado.
Puede automatizar la creación y la manipulación de modelos de Solver de Excel de Microsoft por utilizando una de Visual Basic para Aplicaciones de Microsoft macro (VBA). Este artículo describe cómo se utiliza el lenguaje de macros VBA para utilizar las funciones de Solver de Excel de Microsoft en Microsoft Excel 97. Este artículo se supone que está familiarizado con el lenguaje VBA y el Editor de Visual Basic de Microsoft para Microsoft Excel 97. Los ejemplos que se utilizan en este artículo están disponibles para su descarga en el siguiente sitio Web de Microsoft:
http://download.Microsoft.com/download/excel97win/solverex/1.0/WIN98Me/en-us/SolverEx.exe
Nota También puede utilizar las macros y los ejemplos que se describen en este artículo en las versiones de Microsoft Excel 5.0 y 7.0.

Cómo utilizar las funciones de Microsoft Excel Solver en una macro de VBA

Para utilizar las funciones de complementos de Microsoft Excel Solver en una macro de VBA, debe hacer referencia el complemento desde el proyecto VBA del libro que contiene las macros. Si no se hace referencia el complemento de Microsoft Excel Solver, aparecerá la siguiente error de compilación al intentar ejecutar la macro:
Error de compilación: Sub o Function no definida.
A el complemento de Microsoft Excel Solver para las macros del libro de referencia, utilice el siguiente código pasos:
  1. Abra el libro.
  2. En el Herramientas de en el menú, señale aMacroy, a continuación, haga clic en Editor de Visual Basic.
  3. En el Herramientas de menú, haga clic enReferencias.
  4. En el Referencias disponibles lista, haga clic en para Seleccione el Solver.xls casilla de verificación y, a continuación, haga clic en ACEPTAR.

    Nota Si no aparece Solver.xls en el Referencias disponiblesHaga clic en Examinar. En el Agregar Referencia diálogo cuadro, busque y seleccione el archivo Solver.xla y, a continuación, Haga clic en Abrir. Normalmente se encuentra el archivo Solver.xla en la Subcarpeta de archivos de programa\Microsoft Office\Office\Library\Solver de C:\Program.
Ahora está listo para usar las funciones de Solver de Excel de Microsoft en un Macro VBA.

El diseño de una macro VBA que se crea y se resuelve un modelo de Microsoft Excel Solver simple

Aunque Microsoft Excel Solver ofrece muchas funciones, las siguientes las funciones son fundamentales para crear y para la resolución de un modelo:
  • La función SolverOK
  • La función SolverSolve
  • La función SolverFinish

La función SolverOK

La función SolverOK define un modelo básico de Microsoft Excel Solver. Suele ser la función SolverOK la primera función que va a utilizar para generar el modelo de Solver de Excel de Microsoft. La función SolverOK es equivalente a hacer clic en Solver En la página Herramientas demenú y, a continuación, especificar las opciones que se encuentran en la Parámetros de Solvercuadro de diálogo. Ésta es la sintaxis de la función SolverOK :
SolverOK (argumentos SetCell, MaxMinVal, ValueOf, ByChange)
La siguiente información describe la sintaxis de la función SolverOK :
  • Argumentos SetCell especifica la celda objetivo.
  • MaxMinVal corresponde a si desea resolver la celda objetivo para un valor máximo (1), un valor mínimo (2) o un valor específico (3).
  • ValueOf especifica el valor coincide con la celda objetivo. Si usted establecer MaxMinVal a 3, debe especificar este argumento. Si establece MaxMinVal en 1 ó 2, puede omitir este argumento.
  • ByChange especifica la celda o rango de celdas que van a cambiar.
Figura 1 asocia los argumentos de la función SolverOK con la los parámetros en la Parámetros de Solver cuadro de diálogo.

Figura 1. Parámetros que están asociados con la SolverOK argumentos

Contraer esta imagenAmpliar esta imagen
 Figura 1. Parámetros que están asociados

		  con los argumentos de SolverOK


La función SolverSolve

La función SolverSolve a resolver el modelo con los parámetros que especifican con la función SolverOK . Ejecución de la función SolverSolve equivale a hacer clic en Resolver en el Parámetros de Solver cuadro de diálogo. Ésta es la sintaxis de la función SolverSolve :
SolverSolve (UserFinish, ShowRef)
La siguiente información describe la sintaxis de la función SolverSolve :
  • UserFinish indica si desea que el usuario termine de solucionar la modelo.

    Para devolver los resultados sin que se muestre la Solver Resultados diálogo cuadro, establezca este argumento en TRUE. Para devolver los resultados y mostrar la Resultados de Solver diálogo cuadro, establezca este argumento en FALSE
  • ShowRef sirve para identificar la macro que se llama cuando Microsoft Excel Solver devuelve un solución intermedia.

    El argumento ShowRef debe utilizarse sólo cuando se transfiere TRUE al argumento StepThru de la función SolverOptions .

La función SolverFinish

La función SolverFinish indica qué se debe hacer con los resultados y ¿qué tipo de informe debe crear al finalizar el proceso de solución. Ésta es la sintaxis de la función SolverFinish :
SolverFinish (KeepFinal, ReportArray)
La siguiente información describe la sintaxis de la función SolverFinish :
  • KeepFinal indica qué se debe hacer con los resultados finales. Si KeepFinal es 1, los valores de la solución final se conservarán en las celdas cambiantes, reemplazando los valores. Si KeepFinal es 2, se descartan los valores de la solución final y la primera y se restauran los valores.
  • ReportArray especifica una matriz que indica el tipo de informe de Microsoft Excel creará cuando se alcanza la solución. Si ReportArray se establece en 1, Microsoft Excel crea un informe de resultados. Si establece en 2, Microsoft Excel crea un informe de sensibilidad y si se ha establecido a 3 Microsoft Excel crea un informe de límites. Para obtener más información acerca de estos informes, vea "Cómo generar informes para soluciones"sección.
Figura 2. Opciones de resultados de Solver de Excel de Microsoft que están asociadas con argumentos de SolverFinish

Contraer esta imagenAmpliar esta imagen
 Figura 2. Opciones de resultados de Solver

		  que estén asociados con los argumentos de SolverFinish


Este artículo describe cómo crear un sencillo modelo de Solver de Excel de Microsoft de forma interactiva. El primer paso consiste en crear la hoja de cálculo para el modelo. La hoja de cálculo contiene algunas celdas de datos y al menos una celda que contenga una fórmula. Esta fórmula depende de la otra celdas de la hoja de cálculo. Después de configurar la hoja de cálculo, haga clic en Solver En la página Herramientas de menú. En elParámetros de Solver cuadro de diálogo, especifique la celda objetivo, el valor que que va a resolver para el rango de celdas que van a cambiar, y el restricciones. Haga clic en Resolver & nbsppara iniciar el proceso de solución. Después de que Microsoft Excel Solver ha encontrado una solución, los resultados aparecen en la hoja de cálculo y Microsoft Excel Solver muestra un cuadro de mensaje que pregunta si desea conservar los resultados finales o Si desea descartarlos. Cuando hace clic en una de estas opciones, Microsoft Excel Solver finalice.

Figura 3 se muestra un modelo simple que puede crear mediante el uso de estos pasos.

Figura 3. Un modelo simple: modelo de la raíz cuadrada

Contraer esta imagenAmpliar esta imagen
 Figura 3. A

		  modelo simple: modelo de la raíz cuadrada


En este ejemplo, cambio de celda A1, que contiene la fórmula, = A1 ^ 2 en un valor que hará que la celda A2 igual que un valor de 50. En otras palabras, buscar la raíz cuadrada de 50. No hay ninguna restricción en el modelo de raíz cuadrada. La macro Find_Square_Root lleva a cabo las siguientes tareas:
  • Se encarga de configurar un modelo que va a resolver el valor de la celda A2 para un valor de 50 por al cambiar el valor de la celda A1.
  • Resolver el modelo.
  • Guarda los resultados finales en la hoja de cálculo sin mostrar la Resultados de Solver cuadro de diálogo.
Esta macro simple es crear un modelo de Solver de Excel de Microsoft y resuelve que sin intervención del usuario. El código siguiente describe la macro Find_Square_Root :
    Sub Find_Square_Root()

    ' Set up the parameters for the model.
    ' Set the target cell A2 to a value of 50 by changing cell A1.
    SolverOK SetCell:=Range("A2"), MaxMinVal:=3, ValueOf:=50, _
         ByChange:=Range("A1")

    ' Solve the model but do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Finish and keep the final results.
    SolverFinish KeepFinal:=1

    End Sub
La macro Find_Square_Root2 , es una versión modificada de la macro Find_Square_Root . Si utiliza la función InputBox , la macro Find_Square_Root2 le el valor que desee resolver para la celda objetivo. Después de proporcionar un valor la macro Find_Square_Root2 establece este parámetro como valor del argumento devalueofSolverOK, solucionó el problema, guarda los resultados en la variable raíz cuadrada y, a continuación, descarta la solución y se restablece el valor en la hoja de cálculo a su estado original. Básicamente, la macro Find_Square_Root2 muestra cómo guardar los resultados en uno o varios las variables y, a continuación, restaurar el cambio de las celdas para su valor original.

El código siguiente describe la macro Find_Square_Root2 :
    Sub Find_Square_Root2()

    Dim val
    Dim sqroot

    ' Request the value for which you want to obtain the square root.
    val = Application.InputBox( _
         prompt:="Please enter the value for which you want " & _
         "to find the square root:", Type:=1)

    ' Set up the parameters for the model.
    SolverOK SetCell:=Range("A2"), MaxMinVal:=3, ValueOf:=val, _
         ByChange:=Range("A1")

    ' Do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Save the value of cell A1 (the changing cell) before you discard 
    ' the results.
    sqroot = Range("a1")

    ' Finish and discard the results.
    SolverFinish KeepFinal:=2

    ' Show the result in a message box.
    MsgBox "The square root of " & val & " is " & Format(sqroot, "0.00")

    End Sub

Cómo generar informes para soluciones

Microsoft Excel Solver ofrece varios tipos de informes que describen cómo la Puede cambiados los resultados y las restricciones de proximidad llegaron a sus valores críticos. Cada informe se coloca en una hoja de cálculo en el libro. Después de son los tipos de informes que ofrece el Solver de Excel de Microsoft:
  • Informe de resultados - el informe de resultados muestra la celda objetivo y las celdas cambiantes con sus correspondientes valores originales y finales, las restricciones, y información acerca de las mismas.
  • El Informe de sensibilidad - el informe de sensibilidad proporciona información acerca de la sensibilidad la solución consiste en pequeños cambios en la fórmula para la celda objetivo.
  • Informe de límites - informe de los límites de la muestra la celda objetivo y las celdas cambiantes con sus respectivos valores, los límites superiores e inferiores y el destino valores.
Para crear informes para los modelos de, especifique una matriz de valores para el argumento ReportArray de la función SolverFinish . Para obtener más información acerca de el argumento ReportArray , consulte la "SolverFinish (KeepFinal, ReportArray)"sección. Por ejemplo, si desea generar un informe de límites para el modelo que la macro Find_Square_Root2 se crea y se resuelve, modifique la función SolverFinish en el macro para que TI tiene un aspecto similar al ejemplo de código siguiente:
    SolverFinish KeepFinal:=2, ReportArray:= Array(3)
Para generar varios informes, modifique la función SolverFinish para que tenga un aspecto similar al ejemplo de código siguiente:
    SolverFinish KeepFinal:=2, ReportArray:= Array(1,2)

Cómo utilizar las funciones de Microsoft ExcelSolver en una macro de bucle

En muchas situaciones, es una buena idea de que Solver de Excel de Microsoft resolver el celda de destino para varios valores. Por lo general puede lograr esto mediante el uso de uno de las estructuras de bucle que están disponibles con VBA.

La macro Create_Square_Root_Table muestra cómo Microsoft Excel Solver funciona en una macro de bucle. Create_Square_Root_Table macro crea una tabla en una hoja de cálculo nueva. Inserta los números de uno a través de diez veces mayor y la raíz cuadrada correspondiente de cada número. La macro Create_Square_Root_Table crea la tabla utilizando un bucle For para recorrer en iteración los números de 1 a 10 y que satisface la celda de destino en el modelo de raíz cuadrada de un valor que coincide con el número de la iteración. El código siguiente describe la macro Create_Square_Root_Table :
    Sub Create_Square_Root_Table()

    ' Add a new worksheet to the workbook.
    Set w = Worksheets.Add

    ' Put the value 2 in cell C1 and the formula =C1^2 in cell C2.
    w.Range("C1").Value = 2
    w.Range("C2").Formula = "=C1^2"

    ' A loop that will make 10 iterations, starting with the number 1, 
    ' and finishing at the number 10.
    For i = 1 To 10

        ' Set the Solver parameters that indicate that Solver should
        ' solve the cell C2 for the value of i (where i is the number
        ' of the iteration) by changing cell C1.
        SolverOk SetCell:=Range("C2"), ByChange:=Range("C1"), _
            MaxMinVal:=3, ValueOf:=i

        ' Do not display the Solver Results dialog box.
        SolverSolve UserFinish:=True

        ' Save the value of i in column A and the results of the 
        ' changing cell in column B.
        w.Cells(i, 1) = i
        w.Cells(i, 2) = Range("C1")

        ' Finish and discard the final results.
        SolverFinish KeepFinal:=2

    Next

    ' Clear the range C1:C2
    w.Range("C1:C2").Clear

    End Sub

La macro Create_Square_Root_Table genera la tabla que se muestra en la figura 4.

Figura 4. Resultados generados por la macro Create_Square_Root_Table

Contraer esta imagenAmpliar esta imagen
Figura 4. Resultados generados por el

		  Macro de Create Square Root Table


Cómo trabajar con restricciones

Una restricción es una restricción en el contenido de uno o más celdas. Un modelo puede tener una o varias restricciones. El conjunto de restricciones es un conjunto de las desigualdades o un conjunto de igualdades que quitar ciertas combinaciones de valores para las variables de decisión de la solución. Por ejemplo, una restricción puede requieren que una celda ser mayor que cero y esa otra celda contienen sólo un valor entero.

El modelo de raíz cuadrada que hemos analizado hasta ahora es un modelo simple que no contiene todas las restricciones. La figura 5 muestra modelo que utiliza las restricciones. El propósito de este modelo es encontrar la óptima combinación de productos para el máximo beneficio.

Figura 5. Mezcla de productos con reducir el margen de beneficio

Contraer esta imagenAmpliar esta imagen
Figura 5. Mezcla de productos con

		  reducir el margen de beneficio


Por ejemplo, si una empresa fabrica los televisores, equipos de sonido, altavoces y se utiliza un inventario de piezas comunes de fuentes de alimentación, conos de altavoz y así sucesivamente. Las partes son en disponibilidad limitada. Su objetivo es determinar la combinación más rentable de productos para generar. El beneficio por unidad disminuye con el volumen como incentivos de precios adicionales son necesarios para cargar el canal de distribución. El exponente de rentabilidad es 0,9. Este exponente es se utiliza para calcular las ganancias por producto en el intervalo G11:I11.

Su objetivo es encontrar el máximo beneficio (celda G14). Los valores que usted podrá cambiar para buscar el máximo beneficio son el número de unidades que se generan. El gama G9:G11 representa las celdas cambiantes en este modelo. La única restricción es que el número de componentes utilizados no puede superar el número de artículos que se tiene en la mano. Con Microsoft Excel Solver, esta restricción aparece como E3:E7<=B3:B7. if="" you="" were="" to="" build="" this="" microsoft="" excel="" solver="" model="" interactively,="" the="" microsoft="" excel="" solver="" parameters="" would="" look="" similar="" to="" those="" that="" are="" in="" figure="" 6.=""></=B3:B7.>

Figura 6. Parámetros de Solver de Excel de Microsoft para la mezcla de productos con el modelo de reducir el margen de beneficio

Contraer esta imagenAmpliar esta imagen
Figura 6. Parámetros de Solver de Excel de Microsoft para

		  la gama de productos con el modelo de reducir el margen de beneficio


Para crear y resolver la mezcla del producto con el modelo de reducir el margen de beneficio, va a utilizar un nueva función, la función SolverAdd , además de las funciones de Microsoft Excel Solver VBA que estaban se ha descrito anteriormente. La función SolverAdd agrega la restricción para el modelo. Ejecutar la función SolverAdd es equivalente a hacer clic en el Agregar botón en la Parámetros de Solver cuadro de diálogo. El Función SolverAdd tiene la siguiente sintaxis:
SolverAdd (referenciaDeCelda, relación, FormulaText)
La siguiente información describe la sintaxis de la función SolverAdd :
  • CellRef hace referencia a una o varias celdas que forman la parte izquierda de la restricción.
  • Relación es la relación aritmética entre los lados izquierdo y los derecho de una restricción.
  • Relación puede ser un valor comprendido entre 1 y 5 como en el ejemplo siguiente:
    • El valor 1 es menor o igual que)<>
    • Vaue 2 es igual a (=).
    • El valor 3 es mayor que o igual que (> =).
    • El valor 4 es un entero.
    • El valor 5 es el archivo binario (un valor de cero o uno).
  • FormulaText hace referencia a una o varias celdas que forman la parte derecha de la Constraint.* *
** Al especificar un rango de celdas para el argumento FormulaText de la función SolverAdd , tenga en cuenta si la referencia será relativo o absoluto. Por lo general, debe especificar un absoluto referencia para el argumento FormulaText . Sin embargo, si especifica las referencias relativas para el argumento FormulaText , conseguir que la referencia con respecto a la celda objetivo y no la celda activa.

Nota En Microsoft Excel, versiones 5.0 y 7.0, utilice la notación F1C1 ¡ al especificar una celda o un rango de celdas con el argumento FormulaText . Por el contrario, en Microsoft Excel 97, utilice el estilo de A1 notación para especificar el argumento FormulaText .

Figura 7. Los campos que están asociados con la Argumentos de SolverAdd

Contraer esta imagenAmpliar esta imagen
 Figura 7. Campos que están asociados con

		  los argumentos de SolverAdd


La macro Maximum_Profit que genera un modelo para la mezcla de productos con traduce Modelo de devoluciones. Esta macro ejecuta las siguientes funciones o argumentos:

  • La función SolverOK configura de la celda objetivo para un valor máximo y Especifica las celdas que se va a cambiar.
  • La función SolverAdd agrega la restricción para el modelo.
  • La función SolverSolve encuentre una solución sin que se muestre laResultados de Solver cuadro de diálogo.
  • La función SolverFinish devuelve los resultados finales a la hoja de cálculo.
El código siguiente se describe la macro Maximum_Profit :
    Sub Maximum_Profit()

    ' Set up the parameters for the model.
    ' Determine the maximum value for the sum of profits in cell G14
    ' by changing the number of units to build in cells G9:I9.
    Solverok setcell:=Range("G14"), maxminval:=1, _
        bychange:=Range("G9:I9")

    ' Add the constraint for the model. The only constraint is that the
    ' number of parts used does not exceed the parts on hand-- 
    ' E3:E7<=B3:B7
    SolverAdd CellRef:=Range("E3:E7"), Relation:=1, _
        FormulaText:="$B$3:$B$7"

    ' Do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Finish and keep the final results.
    SolverFinish KeepFinal:=1

    End Sub

Nota En Microsoft Excel, versiones 5.0 y 7.0, utilice la notación F1C1 Cuando se especifica una celda o rango de celdas con el argumento FormulaText . Por el contrario, en Microsoft Excel 97, utilice el estilo de A1 notación para especificar el argumento FormulaText .

Cuando ejecuta la macro Maximum_Profit , Microsoft Excel Solver encontrará una solución de la creación de aparatos de TV de 160, 200 equipos de sonido y 80 altavoces por una ganancia máxima de 14,917 dólares.

Cómo cambiar y eliminar restricciones

Las restricciones en el modelo se pueden cambiar mediante programación o puede eliminar. Las restricciones se identifican por sus argumentos CellRef y Relation .

Para cambiar mediante programación una existente restricción, utilice la función SolverChange . Ésta es la sintaxis para SolverChange función:
SolverChange (referenciaDeCelda, relación, FormulaText)
Tenga en cuenta que los argumentos de la función SolverChange corresponde a las que se utiliza con la función SolverAdd .

Si desea Para cambiar la restricción en la mezcla del producto con el modelo de rentabilidad, podría utilizar la función SolverChange . Por ejemplo, actualmente la restricción que se especifica es que el número de los artículos utilizados sea menor o igual a la número de los elementos de mano (E3:E7<= b3:b7).="" if="" you="" want="" to="" change="" this="" constraint="" so="" that="" the="" number="" of="" parts="" used="" is="" less="" than="" or="" equal="" to="" the="" number="" of="" parts="" projected="" (number="" of="" parts="" on="" hand="" plus="" number="" of="" parts="" ordered).="" this="" new="" constraint="" would="" look="" like="" e3:e7=""></=><= d3:d7.="" the="" following="" macro="" would="" change="" the="" existing="" constraint=""></=><=B3:B7 to="" e3:e7=""></=B3:B7><= d3:d7="" and="" solve="" for="" a="" solution.=""></=>

El código siguiente describe la macro Change_Constraint_and_Solve :
    Sub Change_Constraint_and_Solve()

    ' Change the constraint.
    SolverChange CellRef:=Range("E3:E7"), Relation:=1, _
       FormulaText:="$D$3:$D$7"

    ' Return the results and display the Solver Results dialog box.
    SolverSolve UserFinish:=False

    End Sub

Debido a que se identifican las restricciones por los argumentos de la relación y CellRef , sólo puede cambiar el argumento FormulaText para la restricción mediante el uso de la función SolverChange . Si CellRef y los valores de relación no coinciden con una restricción ya existente, debe eliminar la restricción y, a continuación, agregue la restricción modificada. Para eliminar una restricción, utilice la función SolverDelete . Ésta es la sintaxis de la función SolverDelete :

SolverDelete (referenciaDeCelda, relación, FormulaText)

Tenga en cuenta que los argumentos de la función SolverDelete los mismos para las que se utiliza con las funciones SolverChange y SolverAdd .

La siguiente macro muestra cómo eliminar y agregar una restricción. En este ejemplo, la macro Change_Constraint_and_Solve2 quita la restricción E3:E7<=B3:B7 from="" the="" product="" mix="" with="" diminishing="" returns="" model="" and="" adds="" a="" new="" constraint.="" the="" new="" constraint="" is="" just="" a="" modification="" of="" the="" original="" constraint,="" where="" the="" left="" and="" right="" sides="" of="" the="" constraint="" are="" reversed.=""></=B3:B7>

El código siguiente describe la macro Change_Constraint_and_Solve2 :
    Sub Change_Constraint_and_Solve2()

    ' Reverse the left and right sides of the constraint...
    ' Delete the constraint E3:E7<=B3:B7 and add the
    ' constraint B3:B7>=E3:E7.
    SolverDelete CellRef:=Range("E3:E7"), Relation:=1, _
        FormulaText:="$B$3:$B$7"
    SolverAdd CellRef:=Range("B3:B7"), Relation:=3, _
        FormulaText:="$E$3:$E$7"
    
    ' Return the results and display the Solver Results dialog box.
    SolverSolve UserFinish:=False
    
    End Sub

Nota En Microsoft Excel, versiones 5.0 y 7.0, utilice la notación F1C1 Cuando se especifica una celda o rango de celdas con el argumento FormulaText . Por el contrario, en Microsoft Excel 97, utilice el estilo de A1 notación para especificar el argumento FormulaText .

Cómo cargar y guardar los modelos

Cuando guarde el libro, los últimos parámetros que se especificado en el Parámetros de Solver cuadro de diálogo se guardan con el libro. Por lo tanto, cuando se abre el libro, los parámetros son el igual que cuando guardó por última vez el libro.

Puede definir más de un problema en una hoja de cálculo. Cada problema se compone de celdas y las restricciones que escribió en el Parámetros de Solver y la Opciones de Solver cuadros de diálogo. Debido a que se guarda el último problema con la hoja de cálculo, se perderán todos los demás problemas a menos que se guarda explícitamente ellos. Para guardarlos, haga clic en Guardar modelo en el Solver Opciones de cuadro de diálogo. Del mismo modo, al que desea restaurar la previamente los parámetros guardados, haga clic en Modelo de carga en el Solver Opciones de cuadro de diálogo.

Modelos de Solver se almacenan en un intervalo de celdas de una hoja de cálculo. La primera celda del rango contiene la fórmula para el celda de destino. La segunda celda del rango contiene la fórmula que identifica las celdas cambiantes en el modelo. La última celda del rango contiene una matriz que representa las opciones establecidas en el Opciones de Solver cuadro de diálogo cuadro de. Las celdas entre la segunda celda y la última celda contienen las fórmulas que representan las restricciones en el modelo.

La figura 8 muestra una modelo de programación de empleados. Suponga que trabaja para una pequeña fabricante. La tabla siguiente muestra por hora tasa de cada empleado de pago, el número de horas que están programados y un número previsto de unidades de cada empleado puede producir en una hora. Su objetivo es satisfacer una cuota específica para el número de las unidades produjeron y minimizar los costos de mano de obra.

Figura 8. Empleado Modo de programación
l
Contraer esta imagenAmpliar esta imagen
 Figura 8. Programación de empleados

		  modelo


Dos factores adicionales (o las restricciones) que es necesario Tenga en cuenta son el número mínimo/máximo de horas cualquier un empleado puede trabajar y el número de unidades que se desea generar. Si para una semana especificada, es necesario para generar 3975 unidades y desea que cada empleado para trabajar entre 30 y 45 las horas, los parámetros de Solver de Excel de Microsoft tendría un aspecto similares a los contemplados en el siguiente tabla:

Contraer esta tablaAmpliar esta tabla
ParámetroRango de celdasDescripción
Celda objetivo $D$ 12 Costo de mano de obra.
Las celdas cambiantes $C$ 2:$ C$ 8 Horas trabajadas por empleado.
Restricciones $C$ 2:$ C$ 8<=></=> Máximo las horas por empleado es 45.
$C$ 2:$ C$ 8 > = 30 Número mínimo de horas por empleado es 35.
$G$ 12 = 3975 Número de unidades es 3975.


Los objetivos son a la solución en costos de trabajo óptimo en un cada semana, para guardar cada modelo semanalmente y ser capaz de cargar cualquier semanal modelo cuando lo necesite.

En una macro, los parámetros de Solver de Excel de Microsoft para un modelo puede guardarse y cargarse mediante el uso de SolverSave y las funciones de SolverLoad usuarios, respectivamente. SolverSave y las funciones de SolverLoad tienen lo siguiente sintaxis:

SolverSave (SaveArea)

SolverLoad (LoadArea)

SolverSave y las funciones de SolverLoad tienen solo un argumento, SaveArea y los argumentos de LoadArea respectivamente. Los siguientes argumentos especifican un rango en una hoja de cálculo donde se almacena la información del modelo.

La siguiente macro de New_Employee_Schedule , se muestra cómo crear, resolver y guardar un modelo de base acción del usuario. Se pregunta al usuario para proporcionar la fecha del modelo, el número de las unidades para producir y el número mínimo y máximo de horas por empleado. Estos datos, a continuación, se utiliza para crear el modelo. Se ha resuelto el modelo y, a continuación, guarda con la acción del usuario.

El código siguiente describe la macro New_Employee_Schedule :
    Sub New_Employee_Schedule()
    
    ' Prompt the user for the date of the model, the units to produce,
    ' and the maximum and minimum number of hours per employee.
    ModelDate = Application.InputBox( _
       Prompt:="Date of Model:", Type:=2)
    Units = Application.InputBox( _
       Prompt:="Projected Number of Units:", Type:=1)
    MaxHrs = Application.InputBox( _
       Prompt:="Maximum Number of Hours Per Employee:", Type:=1)
    MinHrs = Application.InputBox( _
       Prompt:="Minimum Number of Hours Per Employee:", Type:=1)
    
    ' Clear any previous Solver settings.
    SolverReset
    
    ' Set the target cell, D12, to a minimum value by changing
    ' the range, C2:C8.
    SolverOk SetCell:=Range("$D$12"), MaxMinVal:=2, _
       ByChange:=Range("C2:C8")
    
    ' Add the constraint that number of hours worked <= MaxHrs.
    SolverAdd CellRef:=Range("C2:C8"), Relation:=1, FormulaText:=MaxHrs
    
    ' Add the constraint that number of hours worked >=MinHrs.
    SolverAdd CellRef:=Range("C2:C8"), Relation:=3, FormulaText:=MinHrs
    
    ' Add the constraint that number of units produced = Units.
    SolverAdd CellRef:=Range("G12"), Relation:=2, FormulaText:=Units
    
    ' Solve the model and keep the final results.
    SolverSolve UserFinish:=True
    SolverFinish KeepFinal:=1
    
    ' Save the input values for ModelDate, MaxHrs, MinHrs, and Units
    ' in columns I:L.
    Set ModelRange = Range("I2:R2").CurrentRegion.Offset( _
       Range("I2:R2").CurrentRegion.Rows.Count).Resize(1, 1)
    ModelRange.Resize(1, 4) = Array("'" & Format(ModelDate, "m/d/yy"), _
       Units, MaxHrs, MinHrs)
    
    ' Save the model parameters to the range M:R in the worksheet.
    SolverSave SaveArea:=ModelRange.Offset(, 4).Resize(1, 6)
    
    End Sub
Nota En Microsoft Excel, versiones 5.0 y 7.0, utilice la notación F1C1 Cuando se especifica una celda o rango de celdas con el argumento FormulaText . Por el contrario, en Microsoft Excel 97, utilice el estilo de A1 notación para especificar el argumento FormulaText .

Figura 9 se ilustra cómo guardar modelo la información aparece en la hoja de cálculo.

Figura 9. Información sobre el modelo que se guarda en la macro New_Employee_Schedule

Contraer esta imagenAmpliar esta imagen
Figura 9. Información sobre el modelo que se ha guardado

		  mediante la macro New Employee Schedule


La macro New_Employee_Schedule guarda cada nuevo modelo en la hoja de cálculo. La macro Load_Employee_Schedule puede cargar uno de estos modelos guardados. La macro solicita el usuario para que el modelo de carga y, a continuación, en columna de búsquedas I para el fecha de modelo. If se encuentra el fecha de modelo, la macro Load_Employee_Schedule carga el modelo correspondiente, lo resuelve, y, a continuación, mantiene los resultados finales.

El código siguiente describe la macro New_Employee_Schedule:
    Sub Load_Employee_Schedule()
    
    ' Prompt for the date of the model. 
    ModelDate = Application.InputBox( _
       Prompt:="Date of Model to Load:", Type:=2)
    
    ' Locate the date in column I.
    Set DateRange = Range("I2").CurrentRegion.Resize(, 1)
    r = Application.Match(ModelDate, DateRange, 0)
    
    If IsError(r) Then
        ' Display a message if the model date is not found
        MsgBox "Cannot find a model with the date " & ModelDate
    Else
        ' If the model date is found, load the model into Solver,
        ' solve the model, and keep the final results.
        SolverLoad LoadArea:=DateRange.Offset(r - 1, 4).Resize(1, 6)
        SolverSolve UserFinish:=True
        SolverFinish KeepFinal:=1
    End If
    
    End Sub
La macro New_Employee_Schedule presenta la función SolverReset después de cada . SolverReset después de cada función puede utilizarse para eliminar todas las selecciones de celdas y restricciones en el Parámetros de Solver cuadro de diálogo y para restablecer todas las configuraciones en No tiene la función SolverReset argumentos.

Cómo encontrar más información acerca de Microsoft Excel Solver

Los siguientes recursos proporcionan información acerca de cómo utilizar Microsoft Excel Solver Add-in.

  • Para obtener ayuda acerca de los mensajes de solver específicos, veaPrimera línea Sistemas.
  • Para obtener indicaciones sobre la creación de legible, fácil de administrar modelos, veaPrimera línea Sistemas.
  • Para obtener información adicional sobre el Solver limita las restricciones y haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    75714Límites de Solver para las restricciones
  • Para varios ejemplos que utilizan Microsoft Excel Solver add-in en Microsoft En Excel, vea el archivo de ejemplo Solvsamp.xls.
  • Ésta es la ubicación predeterminada del archivo de ejemplo que se incluye con Microsoft Excel 97:
    \Program Files\Microsoft Office\Office\Examples\Solver\SolvSamp.xls
  • Ésta es la ubicación predeterminada del archivo de ejemplo que se incluye con Microsoft Excel 7.0:
    \MSOffice\Excel\Examples\Solver\SolvSamp.xls
  • Ésta es la ubicación predeterminada del archivo de ejemplo que se incluye con Microsoft Excel 5.0:
    \Excel\Examples\Solver\SolvSamp.xls

Cómo obtener más información sobre el algoritmo y métodos que utilizan Solver de Excel de Microsoft

Microsoft Excel Solver utiliza el Código de optimización no lineal (GRG2) desarrollado por Leon Lasdon, University of Texas en Austin y Allan Waren, Cleveland State University.

Para obtener información adicional sobre el algoritmo utilizado por Microsoft Excel Solver, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
82890Usos de Solver generalizado reducida


Los problemas lineales y enteros utilizan el método más simple con los límites indicados en las variables y el método de ramificación y límite, implementada por John Watson y Dan Fylstra de Frontline Systems, Inc. Para obtener más información acerca de el proceso de solución interno que utiliza Solver, contacto:

Frontline Systems, Inc.
P.O. Box 4288
Incline Village, NV 89450-4288 
(702) 831-0300
Web site: http://www.frontsys.com
Electronic mail: info@frontsys.com 


Selecciones de Microsoft Excel Solver código de programa son copyright 1990, 1991, 1992 y 1995 de Frontline Systems, Inc. partes tienen copyright en 1989 de Optimal Methods, Inc.

Nota El Microsoft Excel Solver add-in que se describe en este artículo se proporciona "tal cual" y no lo hacemos garantiza que se puede usar en todas las situaciones. Aunque son compatibles con Microsoft Pueden ayudar los profesionales de TI con la instalación y la funcionalidad de este Add-in, no modificarán el add-in para ofrecer otra funcionalidad.

Se ofrece ninguna garantía. El software se proporciona "como-es," sin garantía de ningún tipo, y cualquier uso de este producto de software queda bajo su responsabilidad.

Propiedades

Id. de artículo: 843304 - Última revisión: jueves, 31 de enero de 2013 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft Excel 97 Standard Edition
Palabras clave: 
kbhowto kbmacroexample kberrmsg kbaddin kbvba kbprogramming kbinfo kbmt KB843304 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 843304
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com