Como criar macros do Visual Basic utilizando o Excel Solver no Excel 97

Traduções de Artigos Traduções de Artigos
Artigo: 843304 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo descreve como utilizar o Microsoft Excel Solver no Microsoft Excel 97 para criar macros do Microsoft Visual Basic. Microsoft Excel Solver é um suplemento do Microsoft Excel.

Além disso, este artigo contém informações sobre como criar macros, como criar uma macro e como trabalhar com restrições de uma macro. Este artigo também aborda o algoritmo e métodos utilizados pelo Microsoft Excel Solver. A lista seguinte fornece todos os tópicos discutidos num artigo.

INTRODUÇÃO

Este artigo contém informações acerca do Microsoft Excel Solver.

Mais Informação

Descrição do Microsoft Excel Solver

Microsoft Excel Solver é que um Microsoft Excel in adicionar Microsoft Excel Solver ajuda a determinar o valor óptimo para uma fórmula numa célula de destino específico numa folha de cálculo do Microsoft Excel. Microsoft Excel Solver ajusta os valores de outras células que estão relacionadas com a célula de destino utilizando uma equação. Depois de criar uma equação e definir um conjunto de parâmetros ou restrições para as variáveis na equação, o Microsoft Excel Solver tenta várias soluções para chegar uma resposta que satisfaça todas as restrições. Microsoft Excel Solver utiliza os seguintes elementos para "resolver" uma equação:
  • célula de destino - A célula de destino é o objectivo. Esta é a célula no modelo de folha de cálculo que irá ser minimizado, maximizado ou definida para um determinado valor.
  • alterar células - células variáveis são as variáveis de decisão. Estas células afectam o valor da célula de destino. Estas células são alteradas pelo Microsoft Excel Solver encontrar a solução ideal para a célula de destino.
  • restrições de acesso-restrições são restrições no conteúdo de células. Por exemplo, uma célula num modelo de folha de cálculo pode estar limitada a valores de inteiros, enquanto outra célula pode ser restringida ser menor do que um determinado valor.
Pode automatizar a criação e manipulação de modelos do Microsoft Excel Solver utilizando um Microsoft Visual Basic para macro Applications (VBA). Este artigo descreve como utilizar a linguagem de macro VBA para utilizar as funções do Microsoft Excel Solver no Microsoft Excel 97. Este artigo pressupõe que está familiarizado com a linguagem VBA e o Microsoft Visual Basic Editor para o Microsoft Excel 97. Os exemplos que são utilizados neste artigo estão disponíveis para transferência no seguinte Web site da Microsoft:
http://download.microsoft.com/download/excel97win/solverex/1.0/WIN98Me/EN-US/SolverEx.exe
Nota Também pode utilizar as macros e os exemplos são descritos neste artigo no Microsoft Excel versões 5.0 e 7.0.

Como utilizar as funções do Microsoft Excel Solver uma macro do VBA

Para utilizar as funções do suplemento Microsoft Excel Solver uma macro do VBA, tem de referenciar o suplemento do projecto VBA do livro que contém as macros. Se não referenciar o suplemento do Microsoft Excel Solver, receberá o seguinte erro de compilação quando tentar executar a macro:
Erro de compilação: Sub ou Function não definido.
Para fazer referência o suplemento do Microsoft Excel Solver para macros do livro, utilize os seguintes passos:
  1. Abra o livro.
  2. No menu Ferramentas , aponte para macro e, em seguida, clique em Editor do Visual Basic .
  3. No menu Ferramentas , clique em References .
  4. Na lista Available References , clique para seleccionar a caixa de verificação Solver.xls e, em seguida, clique em OK .

    Nota Se vir não Solver.xls na lista Available References , clique em Procurar . Na caixa de diálogo Adicionar referência , localize e seleccione o ficheiro Solver.xla e, em seguida, clique em Abrir . O ficheiro Solver.xla normalmente está localizado na subpasta C:\Program Files\Microsoft Office\Office\Library\Solver.
Agora está pronto para utilizar as funções do Microsoft Excel Solver numa macro VBA.

Como estruturar uma macro VBA que cria e resolve um modelo do Microsoft Excel Solver simples

Apesar do Microsoft Excel Solver oferecer várias funções, as seguintes três funções são fundamentais para criar e para resolver um modelo:
  • A função SolverOK
  • A função SolverSolve
  • A função SolverFinish

A função SolverOK

A função SolverOK define um modelo básico do Microsoft Excel Solver. A função SolverOK é geralmente a primeira função que irá utilizar para criar o modelo do Microsoft Excel Solver. A função SolverOK é equivalente a clicar em Solver nas Ferramentas de menu e, em seguida, especificando as opções de Parâmetros do Solver caixa de diálogo. Segue-se a sintaxe da função SolverOK :
SolverOK(SetCell, MaxMinVal, ValueOf, ByChange)
As informações seguintes descrevem a sintaxe da função SolverOK :
  • SetCell Especifica a célula de destino.
  • MaxMinVal corresponde à se pretende resolver a célula de destino para um valor máximo (1), um valor mínimo (2) ou um valor específico (3).
  • ValueOf Especifica o valor correspondente à célula de destino. Se definiu MaxMinVal para 3, tem de especificar este argumento. Se definiu MaxMinVal para 1 ou 2, pode omitir este argumento.
  • ByChange Especifica a célula ou intervalo de células que vai ser alterado.
Figura 1 associa os argumentos da função SolverOK com os parâmetros na caixa de diálogo Parâmetros do Solver .

Figura 1. Parâmetros que estão associados com SolverOK argumentos

Reduzir esta imagemExpandir esta imagem
 Figure 1. Parameters that are associated
		  with the SolverOK arguments


A função SolverSolve

A função SolverSolve resolve o modelo utilizando os parâmetros que especificou com a função SolverOK . Executar a função SolverSolve é equivalente a clicar em resolução na caixa de diálogo Parâmetros do Solver . Segue-se a sintaxe da função SolverSolve :
SolverSolve(UserFinish, ShowRef)
As informações seguintes descrevem a sintaxe da função SolverSolve :
  • UserFinish indica se pretende que o utilizador acabar de resolver o modelo.

    Para devolver os resultados sem apresentar o Solver resultados diálogo caixa, defina este argumento como VERDADEIRO. Para devolver os resultados e apresentar a caixa de diálogo Resultados do Solver , definir este argumento como FALSO
  • ShowRef identifica a macro é chamada quando o Microsoft Excel Solver devolve uma solução intermédia.

    O argumento ShowRef deve ser utilizado apenas quando o verdadeiro é transferida para o argumento StepThru da função SolverOptions .

A função SolverFinish

A função SolverFinish indica o que fazer com os resultados e o tipo de relatório para criar depois de concluir o processo de solução. Segue-se a sintaxe da função SolverFinish :
SolverFinish (KeepFinal, ReportArray)
As informações seguintes descrevem a sintaxe da função SolverFinish :
  • KeepFinal indica o que fazer com os resultados finais. Se KeepFinal for 1, os valores da solução final são mantidos das células modificáveis, substituindo os valores. Se KeepFinal for 2, os valores da solução final são eliminados e os valores anteriores são restaurados.
  • ReportArray Especifica uma matriz que indica o tipo de relatório, o Microsoft Excel irá criar quando a solução é atingida. Se ReportArray é definido como 1, o Microsoft Excel cria um relatório de respostas. Se definido como 2, Microsoft Excel cria um relatório de confidencialidade, se definida como 3 e Microsoft Excel cria um relatório de limites. Para obter mais informações sobre estes relatórios, consulte a secção "How to generate reports for solutions".
A figura 2. Microsoft Excel Solver resulta opções associadas SolverFinish argumentos

Reduzir esta imagemExpandir esta imagem
 Figure 2. Solver results options
		  that are associated with SolverFinish arguments


Este artigo descreve como criar um modelo do Microsoft Excel Solver simples interactivamente. O primeiro passo é criar a folha de cálculo para o modelo. A folha de cálculo conterá algumas células de dados e pelo menos uma célula que contenha uma fórmula. Esta fórmula depende de outras células na folha de cálculo. Depois de configurar a folha de cálculo, clique em ' Solver ' no menu Ferramentas . Na caixa de diálogo Parâmetros do Solver , especifique a célula de destino, o valor que estão a resolver para, o intervalo de células que serão alteradas e as restrições. Clique em resolução para iniciar o processo de resolução. Depois do Microsoft Excel Solver encontrou uma solução, os resultados aparecem na folha de cálculo, e o Microsoft Excel Solver apresenta uma caixa de mensagem pede-lhe se pretende manter os resultados finais ou se pretender para rejeitá-las. Quando clicar destas opções, o Microsoft Excel Solver termina.

Figura 3 ilustra um modelo simples que pode criar utilizando estes passos.

Figura 3. Um modelo simples: O quadrado raiz modelo

Reduzir esta imagemExpandir esta imagem
 Figure 3. A
		  simple model: The Square Root model


Neste exemplo, alterar célula A1, que contém a fórmula = A1 ^ 2 para um valor fará a célula A2 igual a um valor de 50. Por outras palavras, localize a raiz quadrada de 50. Existem sem restrições no modelo de raiz do quadrado. A macro Find_Square_Root desempenha as seguintes tarefas:
  • Configura um modelo que resolverá o valor da célula A2 para um valor de 50 alterando o valor da célula A1.
  • O modelo é decomposta.
  • Guarda os resultados finais para a folha de cálculo sem apresentar a caixa de diálogo Resultados do Solver .
Esta macro simples cria um modelo do Microsoft Excel Solver e resolve sem qualquer intervenção do utilizador. O código seguinte descreve a 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
a macro Find_Square_Root2 , é uma versão modificada da macro Find_Square_Root . Se utilizar a função de InputBox , a macro Find_Square_Root2 pede-lhe o valor que pretende resolver para a célula de destino. Depois de introduzir um valor, a macro Find_Square_Root2 define este parâmetro como o valor do argumento valueof SolverOK , resolve o problema, guarda os resultados na variável raiz quadrada, em seguida, rejeita a solução e restaura o valor na folha de cálculo para o estado original. Basicamente, a macro Find_Square_Root2 ilustra como pode guardar os resultados numa ou mais variáveis e, em seguida, restaure as células variáveis para o respectivo valor original.

O código seguinte descreve a macro Find_Square_Root2 : sqroot Dim
    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

A gerar relatórios para soluções

Microsoft Excel Solver oferece vários tipos de relatórios que descrevem como os resultados alterado e como fechar as restrições de acesso fornecidas nos respectivos valores críticos. Cada relatório é colocado numa folha de cálculo separada no livro. Estes seguintes são os tipos de relatórios do Microsoft Excel Solver oferece:
  • Resposta relatório - O relatório de respostas lista a célula de destino e as células variáveis com os respectivos valores originais e finais correspondentes, restrições e informações sobre as restrições.
  • Relatório de sensibilidade - O relatório de sensibilidade fornece informações acerca da sensibilidade da solução a pequenas alterações na fórmula da célula de destino.
  • Relatório de limites - O relatório de limites de lista a célula de destino e das células modificáveis com os respectivos valores, os limites inferiores e superiores e os valores alvo.
Para criar relatórios para os modelos, especifique uma matriz de valores para o argumento ReportArray da função SolverFinish . Para obter mais informações sobre o argumento ReportArray , consulte a secção "SolverFinish (KeepFinal, ReportArray) ". Por exemplo, se pretender gerar um relatório de limites para o modelo que a macro Find_Square_Root2 cria e resolve, modifique a função SolverFinish a macro para que é semelhante ao seguinte exemplo de código:
    SolverFinish KeepFinal:=2, ReportArray:= Array(3)
para gerar vários relatórios, modificar função SolverFinish para que é semelhante ao seguinte código de exemplo:
    SolverFinish KeepFinal:=2, ReportArray:= Array(1,2)

Como utilizar as funções do Microsoft ExcelSolver uma macro de ciclo

Em muitos casos, é uma boa ideia para que o Microsoft Excel Solver resolver célula de destino para valores múltiplos. Pode normalmente efectuar isto utilizando uma das estruturas do loop disponíveis com o VBA.

A macro Create_Square_Root_Table demonstra como o Microsoft Excel Solver funciona numa macro de ciclo. Create_Square_Root_Table macro cria uma tabela numa folha de cálculo nova. Insere os números de um a dez e a raiz quadrada correspondente de cada número. A macro Create_Square_Root_Table cria a tabela utilizando um ciclo para iterar através de números de 1 a 10 e resolver a célula de destino no modelo de raiz do quadrado para um valor que corresponde ao número da iteração. O código seguinte descreve a 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

a macro Create_Square_Root_Table gera a tabela ilustrada na Figura 4.

Figura 4. Saída gerado pela macro Create_Square_Root_Table

Reduzir esta imagemExpandir esta imagem
Figure 4. Output that is generated by the
		  Create Square Root Table macro


Como trabalhar com restrições

Uma restrição é uma restrição no conteúdo de uma ou mais células. Um modelo pode ter uma ou várias restrições. O conjunto de restrição é um conjunto de inequalities ou um conjunto de equalities remover determinadas combinações de valores para as variáveis de decisão a solução. Por exemplo, uma restrição poderão necessitar do que uma célula de ser maior que zero e que outra célula conter apenas um valor inteiro.

O modelo de raiz de quadrado abordados tem para este ponto é um modelo simples que não contenha quaisquer restrições. Figura 5 ilustra um modelo que utiliza restrições. O objectivo deste modelo é localizar a combinação ideal de produtos para o lucro máximo.

Figura 5. Produto misturar com diminishing margem de lucro

Reduzir esta imagemExpandir esta imagem
Figure 5. Product mix with
		  diminishing profit margin


Por exemplo, se uma empresa fabrica televisores, equipamento estéreo, altifalantes e utiliza um inventário de partes comuns de fornecimentos de energia, cones de altifalante e assim sucessivamente. As partes estão no fornecimento limitado. O objectivo é determinar a combinação de produtos para criar mais lucrativas. O lucro por unidade diminui com o volume porque incentivos preço adicionais necessários para carregar o canal de distribuição. O expoente diminishing devolve é 0,9. Este expoente é utilizado para calcular o lucro por produto G11:I11 alcance.

O objectivo é encontrar o lucro máximo (célula G14). Os valores que serão alteradas para localizar o lucro máximo são o número de unidades que cria. O intervalo G9:G11 representa das células modificáveis neste modelo. A restrição só é que o número das partes que utiliza não pode exceder o número de partes que tenha em conta. Com o Microsoft Excel Solver, este constrangimento aparece como E3:E7 < = B3:B7. Se pretender criar este modelo do Microsoft Excel Solver interactivamente, os parâmetros do Microsoft Excel Solver seria semelhante aos que se encontram na figura 6.

Figura 6. Parâmetros do Microsoft Excel Solver para o produto misturam com modelo Diminishing margem de lucro

Reduzir esta imagemExpandir esta imagem
Figure 6. Microsoft Excel Solver parameters for
		  the product mix with Diminishing Profit Margin model


Para criar e resolver as proporções com modelo Diminishing margem de lucro, vai utilizar uma nova função, a função SolverAdd , juntamente com as funções de VBA do Microsoft Excel Solver foram descritas anteriormente. A função SolverAdd adiciona a restrição ao modelo. Executar a função SolverAdd é equivalente a clicar no botão Adicionar na caixa de diálogo Parâmetros do Solver . A função SolverAdd tem a seguinte sintaxe:
SolverAdd (CellRef, relação, FormulaText)
As informações seguintes descrevem a sintaxe da função SolverAdd :
  • CellRef faz referência a uma ou mais células que formam o lado esquerdo da restrição.
  • a relação é a relação entre o lados esquerdo e os direito de uma restrição de aritmética.
  • relação pode ser um valor entre 1 e 5 como no exemplo seguinte:
    • O valor 1 é menor ou igual a (< =).
    • Vaue 2 é igual (=).
    • O valor 3 é maior ou igual a (> =).
    • O valor 4 é um número inteiro.
    • O valor 5 é o ficheiro binário (um valor de zero ou um).
  • FormulaText referencia uma ou mais células que formam o lado direito da constraint.* *
** Quando especifica um intervalo de células para o argumento FormulaText da função SolverAdd , indicar se a referência é relativo ou absoluto. Normalmente, tem de especificar uma referência absoluta para o argumento FormulaText . No entanto, se for especificado referências relativas para o argumento FormulaText , perceber que a referência será relativas a célula de destino e não a célula activa.

Nota No Microsoft Excel versões 5.0 e 7.0, utilize a notação L1C1 quando especificar uma célula ou um intervalo de células com o argumento FormulaText . Em contrapartida, no Microsoft Excel 97, utilize o estilo A1 notação para especificar o argumento FormulaText .

Figura 7. Campos que estão associados com os argumentos SolverAdd

Reduzir esta imagemExpandir esta imagem
 Figure 7. Fields that are associated with
		  the SolverAdd arguments


A macro Maximum_Profit que gera um modelo para as proporções com modelo Diminishing devolve. Esta macro executa as seguintes funções ou argumentos:

  • A função SolverOK configura a célula de destino para um valor máximo e especifica as células a alterar.
  • A função SolverAdd adiciona a restrição ao modelo.
  • A função SolverSolve encontra uma solução sem apresentar a caixa de diálogo Resultados do Solver .
  • A função SolverFinish devolve os resultados finais para a folha de cálculo.
O código seguinte descreve a 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 no Microsoft Excel, versões 5.0 e 7.0, utilize a notação L1C1 ao especificar uma célula ou intervalo de células com o argumento FormulaText . Em contrapartida, no Microsoft Excel 97, utilize o estilo A1 notação para especificar o argumento FormulaText .

Quando executa a macro Maximum_Profit , Microsoft Excel Solver vai encontrar uma solução de criação de conjuntos de TV 160, equipamento 200 estéreo e 80 altifalantes um lucro máximo de $ 14,917 euros.

Como alterar e eliminar restrições

Restrições no modelo podem ser programaticamente alteradas ou eliminadas. Restrições são identificadas pelo respectivo CellRef e argumentos de relação .

Para alterar programaticamente uma restrição de existente, utilize a função SolverChange . Segue-se a sintaxe para SolverChange função:
SolverChange (CellRef, relação, FormulaText)
Note que os argumentos da função SolverChange são o mesmo para aqueles que utiliza com a função SolverAdd .

Se pretender alterar o constrangimento nas proporções com modelo Diminishing devolve, utilizaria a função SolverChange . Por exemplo, actualmente a restrição especificada é que o número de partes utilizadas é menor ou igual ao número de partes disponível (E3:E7 < = B3:B7). Se pretender alterar este constrangimento para que o número de partes utilizadas é menor ou igual ao número de partes projectado (número de partes física) mais várias partes ordenados. Esta nova restrição aspecto E3:E7 < = D3:D7. A seguinte macro alteraria existente E3:E7 de restrição < = B3:B7 para E3:E7 < = D3:D7 e resolver para obter uma solução.

O código seguinte descreve a 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

uma vez que as restrições são identificadas por argumentos CellRef e relações , só pode alterar o argumento FormulaText para a restrição utilizando a função SolverChange . Se CellRef e os valores de relação não correspondem uma restrição existente, tem de eliminar a restrição e, em seguida, adicionar a restrição modificada. Para eliminar uma restrição, utilize a função SolverDelete . Segue-se a sintaxe da função SolverDelete :

SolverDelete (CellRef, relação, FormulaText)

Note que os argumentos da função SolverDelete são o mesmo para as que utilizar com SolverAdd e as funções SolverChange .

A macro seguinte ilustra a eliminar e adicionar uma restrição. Neste exemplo, a macro Change_Constraint_and_Solve2 remove a restrição E3:E7 < = B3:B7 das proporções com modelo Diminishing devoluções e adiciona uma nova restrição. Nova restrição é apenas uma modificação da restrição original, onde o lados esquerdo e direito da restrição estejam invertidos.

O código seguinte descreve a 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 no Microsoft Excel, versões 5.0 e 7.0, utilize a notação L1C1 ao especificar uma célula ou intervalo de células com o argumento FormulaText . Em contrapartida, no Microsoft Excel 97, utilize o estilo A1 notação para especificar o argumento FormulaText .

A carregar e guardar os modelos

Quando guarda o livro, os parâmetros últimos que especificou na caixa de diálogo Parâmetros do Solver são guardados com o livro. Por este motivo, quando abre o livro, os parâmetros são o mesmo quando guardou o livro pela última vez.

Pode definir mais do que um problema para uma folha de cálculo. Cada problema é constituído por células e restrições que introduzir nas caixas de diálogo Opções do Solver e Parâmetros do Solver . Porque apenas o último problema é guardado com a folha de cálculo, perderá todos os outros problemas, a menos que guardar explicitamente. Para guardá-las, clique em Guardar modelo no Solver opções caixa de diálogo. Do mesmo modo, quando pretender restaurar os parâmetros anteriormente guardados, clique em Carregar modelo na caixa de diálogo Opções do Solver .

O Solver modelos são armazenados num intervalo de células numa folha de cálculo. A primeira célula do intervalo contém a fórmula da célula de destino. A segunda célula no intervalo contém a fórmula que identifica as alteradas células do modelo. Na última célula do intervalo contém uma matriz que representa as opções definidas na caixa de diálogo Opções do Solver . As células entre a segunda célula e a última célula contêm as fórmulas que representam as restrições no modelo.

Figura 8 ilustra um modelo para o empregado de agendamento. Suponha que trabalha para um pequeno fabricante. Esta tabela mostra taxa horária cada empregado ?s de pagamento, o número de horas que estão agendadas e número de unidades que cada empregado pode produzir numa hora previsto. O objectivo é satisfazer uma quota específica para o número de unidades produzidas ao minimizar o custo de mão-de-obra.

Figura 8. Empregado Modo de agendamento
l
Reduzir esta imagemExpandir esta imagem
 Figure 8. Employee Scheduling
		  model


Dois factores adicionais (ou restrições) que deve considerar o número de mínimo/máximo de horas pode trabalhar qualquer um empregado e o número de unidades que pretende criar. Se para uma semana especificada, é necessário produzir 3975 unidades e pretender que cada empregado a funciona entre 30 e 45 horas, os parâmetros do Microsoft Excel Solver seria semelhante aos delineado na seguinte tabela:

Reduzir esta tabelaExpandir esta tabela
parâmetro Intervalo de célula Descrição
Célula de destino $ D $ 12 Custo de mão-de-obra.
Alterar células $ C $ 2: $ C $ 8 Horas trabalhadas por empregado.
Restrições $ C $ 2: $ C $ 8 < = 45 Máxima de horas por empregado é 45.
$ C $ 2: $ C $ 8 > = 30 Mínimas de horas por empregado é 35.
$ G $ 12 = 3975 Número de unidades é 3975.


Os objectivos estão a resolver para custo de trabalho ideal numa base semanal, para guardar cada modelo semanalmente e não conseguir carregar qualquer modelo semanal quando for necessário.

Numa macro, os parâmetros do Microsoft Excel Solver para um modelo podem ser guardados e carregados utilizando SolverSave e as funções SolverLoad respectivamente. SolverSave e as funções SolverLoad têm a seguinte sintaxe:

SolverSave (SaveArea)

solverLoad (LoadArea)

SolverSave e as funções SolverLoad têm apenas um argumento, SaveArea e os argumentos LoadArea respectivamente. Estes argumentos especificam um intervalo numa folha de cálculo onde as informações de modelo são armazenadas.

A seguinte macro New_Employee_Schedule , demonstra como criar, resolver e guardar um modelo com base na intervenção do utilizador. O utilizador é solicitado que forneça a data do modelo, o número de unidades a produzir e o número mínimo e máximo de horas por empregado. Estes dados, em seguida, é utilizado para criar o modelo. O modelo é resolvido e, em seguida, guardado com o utilizador de entrada.

O código seguinte descreve a 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 no Microsoft Excel, versões 5.0 e 7.0, utilize a notação L1C1 ao especificar uma célula ou intervalo de células com o argumento FormulaText . Em contrapartida, no Microsoft Excel 97, utilize o estilo A1 notação para especificar o argumento FormulaText .

Figura 9 ilustra como as informações de modelo guardado aparecem na folha de cálculo.

Figura 9. Informações de modelo que guardou pela macro New_Employee_Schedule

Reduzir esta imagemExpandir esta imagem
Figure 9. Model information that is saved
		  by the New Employee Schedule macro


A macro New_Employee_Schedule guarda cada novo modelo de folha de cálculo. A macro Load_Employee_Schedule pode carregar um destes modelos guardados. A macro pede ao utilizador para o modelo para carregar e, em seguida, procura a coluna é a data de modelo. Se for encontrada a data de modelo, a macro Load_Employee_Schedule carrega o correspondente modelo, resolve- e, em seguida, mantém os resultados finais.

O código seguinte descreve a 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
macro New_Employee_Schedule introduz a função SolverReset . SolverReset função pode ser utilizada para eliminar todas as selecções de célula e restrições na caixa de diálogo Parâmetros do Solver e para repor todas as definições em a função SolverReset tem sem argumentos.

Como encontrar mais informações sobre Microsoft Excel Solver

Os seguintes recursos fornecem informações sobre como utilizar o Microsoft Excel Solver add-in.

  • Para obter ajuda com mensagens solver específicas, consulte Frontline Systems.
  • Para obter sugestões sobre criação legível, modelos de fácil gestão, consulte Frontline Systems.
  • Para obter informações adicionais sobre o Solver limites para restrições e clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
    75714O Solver limites de restrições
  • Para vários exemplos que utilizam o suplemento do Microsoft Excel Solver no Microsoft Excel, consulte o ficheiro de exemplo Exemsolv.xls.
  • Segue-se a localização predefinida do ficheiro de exemplo incluído no Microsoft Excel 97:
    \Program Files\Microsoft Office\Office\Examples\Solver\SolvSamp.xls
  • Segue-se a localização predefinida do ficheiro de exemplo incluído no Microsoft Excel 7.0:
    \MSOffice\Excel\Examples\Solver\SolvSamp.xls
  • Segue-se a localização predefinida do ficheiro de exemplo incluído no Microsoft Excel 5.0:
    \Excel\Examples\Solver\SolvSamp.xls

Como obter mais informações sobre o algoritmo e métodos utilizados pelo Microsoft Excel Solver

Microsoft Excel Solver utiliza o Gradiente Reduzido Generalizado (GRG2) optimização não linear código que foi desenvolvido por Leon Lasdon da Universidade do Texas em Austin e Allan Waren Cleveland Universidade do estado.

Para obter informações adicionais sobre o algoritmo utilizado pelo Microsoft Excel Solver, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
82890O Solver utiliza generalizadas reduzida


Linear e inteiro problemas utilizam o método simplex com limites nas variáveis e o método de ramo e dependente, implementada por John Watson e Dan Fylstra, Frontline Systems, Inc. Para obter mais informações sobre o processo de solução internos utilizado pelo Solver, contacte:

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 


Selecções de Microsoft Excel Solver são o código de programa copyright 1990, 1991, 1992 e 1995 da Frontline Systems, Inc. partes são copyright 1989 da Optimal Methods, Inc.

Nota O suplemento do Microsoft Excel Solver abordada neste artigo é fornecido "tal como está" e não garantem que pode ser utilizado em todas as situações. Apesar de profissionais de suporte da Microsoft pode ajudar com a instalação e funcionalidade existente deste suplemento, não modificarão o suplemento para fornecer funcionalidades novas.

não garantia . O software é fornecido "como-é," sem garantias de qualquer tipo e qualquer utilização deste software produto é da responsabilidade do utilizador.

Propriedades

Artigo: 843304 - Última revisão: 11 de outubro de 2006 - Revisão: 1.2
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 97 Standard Edition
Palavras-chave: 
kbmt kbhowto kbmacroexample kberrmsg kbaddin kbvba kbprogramming kbinfo KB843304 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 843304
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

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