Você está na página 1de 21

Este artigo descreve como usar o Microsoft Excel Solver no Microsoft Excel 97 para criar as macros do Microsoft Visual

Basic. Microsoft Excel Solver um suplemento do Microsoft Excel.

Alm disso, este artigo contm informaes sobre como criar macros, como criar uma macro e como trabalhar com restries de uma macro. Este artigo tambm descreve o algoritmo e mtodos que so usados pelo Microsoft Excel Solver. A seguinte lista apresenta todos os tpicos abordados no artigo.

Description of the Microsoft Excel Solver How to use the Microsoft Excel Solver functions in a VBA macro How to design a VBA macro that creates and solves a simple Microsoft Excel Solver model How to generate reports for solutions How to use the Microsoft Excel Solver functions in a looping macro How to work with constraints How to change and delete constraints How to load and save your models How to find more information about Microsoft Excel Solver How to learn more about the algorithm and methods that are used by Microsoft Excel Solver

Voltar para o incio INTRODUO

Este artigo contm informaes sobre o Microsoft Excel Solver. Voltar para o incio Mais Informaes

Descrio do Microsoft Excel Solver


Microsoft Excel Solver que um Microsoft Excel add-in. Microsoft Excel Solver ajuda voc a determinar o valor ideal para uma frmula em uma clula de destino especfico em uma planilha do Microsoft Excel. Microsoft Excel Solver ajusta os valores de outras clulas que esto relacionados clula de destino usando uma equao. Depois de criar uma equao e definem um conjunto de parmetros ou restries para as variveis na equao, o Microsoft Excel Solver tenta vrias solues para chegar a uma resposta que satisfaa todas as restries. Microsoft Excel Solver usa os seguintes elementos para "resolver" uma equao:

clula de destino - A clula de destino o objetivo. Ele a clula no modelo de planilha que sero minimizada, maximizada ou definido com um valor. clulas variveis - alterar clulas so as variveis de deciso. Essas clulas afetam o valor da clula de destino. Essas clulas so alteradas pelo Microsoft Excel Solver para encontrar a soluo ideal para a clula de destino.

restries - restries so restries sobre o contedo de clulas. Por exemplo, uma clula em um modelo de planilha pode ser restrita aos valores inteiros, enquanto outra clula pode ser restrita a ser menor do que um determinado valor.

Voc pode automatizar a criao e a manipulao de modelos do Microsoft Excel Solver usando um Microsoft Visual Basic para Applications (VBA) macro. Este artigo descreve como usar a linguagem de macro VBA para usar as funes do Microsoft Excel Solver no Microsoft Excel 97. Este artigo presume que voc esteja familiarizado com a linguagem VBA e o Editor do Microsoft Visual Basic para o Microsoft Excel 97. Os exemplos que so usados neste artigo esto disponveis para download no site da Microsoft: http://download.microsoft.com/download/excel97win/solverex/1.0/WIN98Me/EN-US/SolverEx.exe Observao Voc tambm pode usar as macros e os exemplos que so descritos neste artigo nas verses do Microsoft Excel 5.0 e 7.0. Voltar para o incio

Como usar as funes do Microsoft Excel Solver em uma macro do VBA


Para usar as funes de suplemento do Microsoft Excel Solver em uma macro do VBA, voc deve referenciar o add-in do projeto VBA da pasta de trabalho que contm as macros. Se voc no referenciar o suplemento do Microsoft Excel Solver, voc receber o seguinte erro de compilao quando voc tenta executar a macro: Erro de compilao: Sub ou funo no definida. Para fazer referncia o suplemento do Microsoft Excel Solver para macros em sua pasta de trabalho, use as seguintes etapas:

1. 2. 3. 4.

Abra sua pasta de trabalho. No menu Ferramentas , aponte para macro e, em seguida, clique em Editor do Visual Basic . No menu Ferramentas , clique em referncias . Na lista Referncias disponveis , clique para selecionar a caixa de seleo Solver.xls e, em seguida, clique em OK .

Observao Se voc no vir Solver.xls na lista de Referncias disponveis , clique em Procurar . Na caixa de dilogo Add Reference , localize e selecione o arquivo Solver.xla e, em seguida, clique em Abrir . O arquivo de Solver.xla normalmente for encontrado na subpasta C:\Program Files\Microsoft Office\Office\Library\Solver.

Voc agora est pronto para usar as funes do Microsoft Excel Solver em uma macro VBA. Voltar para o incio

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

Embora o Microsoft Excel Solver oferece muitas funes, as funes de trs seguintes so fundamentais para criar e solucionar um modelo:

A funo SolverOK A funo SolverSolve A funo SolverFinish

A funo SolverOK
A funo SolverOK define um modelo bsico do Microsoft Excel Solver. A funo de SolverOK geralmente a primeira funo que voc usar para criar o modelo do Microsoft Excel Solver. A funo SolverOK equivalente a clicar Solver em ferramentas do menu e, em seguida, especificar as opes que esto nos Parmetros do Solver caixa de dilogo. A sintaxe para a funo SolverOK o seguinte: SolverOK(SetCell, MaxMinVal, ValueOf, ByChange) As informaes a seguir descrevem a sintaxe para a funo SolverOK :

SetCell especifica a clula de destino. MaxMinVal corresponde ao se voc deseja resolver a clula de destino para um valor mximo (1), um valor mnimo (2) ou um valor especfico (3). ValueOf Especifica o valor para o qual a clula de destino correspondente. Se voc definir MaxMinVal para 3, voc deve especificar esse argumento. Se voc definir MaxMinVal como 1 ou 2, voc pode omitir este argumento.

ByChange especifica a clula ou intervalo de clulas que sero alterados.

A Figura 1 associa os argumentos da funo SolverOK parmetros na caixa de dilogo Parmetros do Solver .

A Figura 1. Parmetros que so associados com o SolverOK argumentos Expandir esta imagem

A funo SolverSolve
A funo SolverSolve resolve o modelo usando os parmetros que voc especificou com a funo SolverOK . Executar a funo SolverSolve equivalente a clicar em resoluo na caixa de dilogo Parmetros do Solver . A sintaxe para a funo SolverSolve o seguinte: SolverSolve(UserFinish, ShowRef) As informaes a seguir descrevem a sintaxe para a funo SolverSolve :

UserFinish indica se voc deseja que o usurio terminar de solucionar o modelo.

Para retornar os resultados sem exibir o Solver resultados dilogo caixa, definir este argumento como TRUE. Para retornar os resultados e exibir a caixa de dilogo Resultados do Solver , defina este argumento como falso

ShowRef identifica a macro que chamada quando o Microsoft Excel Solver retorna uma soluo intermediria.

O argumento ShowRef deve ser usado somente quando verdadeiro passado para o argumento StepThru da funo SolverOptions .

A funo SolverFinish
A funo SolverFinish indica o que fazer com os resultados e o tipo de relatrio para criar aps o processo de soluo concludo. A sintaxe para a funo SolverFinish o seguinte: SolverFinish (KeepFinal, ReportArray) As informaes a seguir descrevem a sintaxe para a funo SolverFinish :

KeepFinal indica o que fazer com os resultados finais. Se KeepFinal for 1, os valores da soluo final so mantidos nas clulas variveis, substituindo os valores. Se KeepFinal for 2, os valores da soluo final so descartados e os valores anteriores so restaurados.

ReportArray Especifica uma matriz que indica o tipo de relatrio, o Microsoft Excel criar quando a soluo for atingida. Se ReportArray for definido como 1, Microsoft Excel cria um relatrio de respostas. Se definido como 2, Microsoft Excel cria um relatrio de sensibilidade e, se definida como 3 Microsoft Excel cria um relatrio de limites. Para obter mais informaes sobre esses relatrios, consulte a seo " How to generate reports for solutions ".

A Figura 2. Microsoft Excel Solver resultados opes que esto associadas com argumentos SolverFinish Expandir esta imagem

Este artigo descreve como criar um modelo simples do Microsoft Excel Solver interativamente. A primeira etapa criar a sua planilha para o modelo. A planilha conter algumas clulas de dados e pelo menos uma clula que contm uma frmula. Essa frmula depende de outras clulas na planilha. Depois de configurar sua planilha, clique em Solver no menu Ferramentas . Na caixa de dilogo Parmetros do Solver , especifique a clula de destino, o valor que voc est solucionando para o intervalo de clulas que sero alteradas e as restries. Clicar em resoluo para iniciar o processo de soluo. Aps o Microsoft Excel Solver tiver encontrado uma soluo, os resultados aparecem na sua planilha, e o Microsoft Excel Solver exibe uma caixa de mensagem que solicita que voc se voc quiser manter os resultados finais ou se voc quiser descart-las. Quando voc clica em uma das seguintes opes, o Microsoft Excel Solver termina.

A Figura 3 ilustra um modelo simples que voc pode criar usando essas etapas.

A Figura 3. Um modelo simples: modelo A raiz quadrada Expandir esta imagem

Neste exemplo, alterar clula A1, que contm a frmula = A1 ^ 2, como um valor que far a clula A2 igual a um valor de 50. Em outras palavras, localizar a raiz quadrada de 50. No h nenhuma restrio no modelo de raiz quadrada. A macro Find_Square_Root realiza as seguintes tarefas:

Configura um modelo que resolver o valor da clula A2 para um valor de 50 alterando o valor da clula A1. Ele resolve o modelo. Ele salva os resultados finais para a planilha sem exibir a caixa de dilogo Resultados do Solver .

Essa macro simples cria um modelo do Microsoft Excel Solver e soluciona-sem qualquer interveno do usurio. O cdigo a seguir descreve a macro Find_Square_Root :

SubFind_Square_Root() 'Setuptheparametersforthemodel. 'SetthetargetcellA2toavalueof50bychangingcellA1. SolverOKSetCell:=Range("A2"),MaxMinVal:=3,ValueOf:=50,_ ByChange:=Range("A1") 'SolvethemodelbutdonotdisplaytheSolverResultsdialogbox. SolverSolveUserFinish:=True 'Finishandkeepthefinalresults. SolverFinishKeepFinal:=1 EndSub
SolverFinish KeepFinal: = 1 end sub A macro Find_Square_Root2 , uma verso modificada da macro Find_Square_Root . Se voc usar a funo InputBox , a macro Find_Square_Root2 solicitar que voc para o valor que voc deseja resolver para a clula de destino. Aps voc digitar um valor, a macro Find_Square_Root2 define esse parmetro como o valor do argumento SolverOK valueof , resolve o problema, salva os resultados na raiz do quadrado varivel e, em seguida, descarta a soluo e restaura o valor na planilha para seu estado original. Basicamente, a macro Find_Square_Root2 ilustra como voc pode salvar os resultados em um ou mais variveis e, em seguida, restaurar as clulas variveis para seu valor original.

O cdigo a seguir descreve a macro Find_Square_Root2 : sqroot Dim

SubFind_Square_Root2() Dimval Dimsqroot 'Requestthevalueforwhichyouwanttoobtainthesquareroot. val=Application.InputBox(_ prompt:="Pleaseenterthevalueforwhichyouwant"&_ "tofindthesquareroot:",Type:=1)

'Setuptheparametersforthemodel. SolverOKSetCell:=Range("A2"),MaxMinVal:=3,ValueOf:=val,_ ByChange:=Range("A1") 'DonotdisplaytheSolverResultsdialogbox. SolverSolveUserFinish:=True 'SavethevalueofcellA1(thechangingcell)beforeyoudiscard 'theresults. sqroot=Range("a1") 'Finishanddiscardtheresults. SolverFinishKeepFinal:=2 'Showtheresultinamessagebox. MsgBox"Thesquarerootof"&val&"is"&Format(sqroot,"0.00") EndSub
Voltar para o incio

Como gerar relatrios para solues


Microsoft Excel Solver oferece vrios tipos de relatrios que descrevem como os resultados alterado e como fechar as restries fornecida com seus valores crticos. Cada relatrio colocado em uma planilha separada na sua pasta de trabalho. Esses seguintes so os tipos de relatrios que o Microsoft Excel Solver oferece:

relatrio de respostas - relatrio de respostas A lista a clula de destino e as clulas variveis com seus valores correspondentes originais e finais, restries e informaes sobre as restries. relatrio de sensibilidade - O relatrio de sensibilidade fornece informaes sobre como confidenciais a soluo pequenas alteraes na frmula para a clula de destino. relatrio de limites - O relatrio de limites de lista a clula de destino e as clulas variveis com seus respectivos valores, os limites inferiores e superiores e os valores de destino.

Para criar relatrios para seus modelos, especifique uma matriz de valores para o argumento ReportArray da funo SolverFinish . Para obter mais informaes sobre o argumento ReportArray , consulte a seo SolverFinish (KeepFinal, ReportArray) . Por exemplo, se voc deseja gerar um relatrio de limites para o modelo que a macro Find_Square_Root2 cria e resolve, modifique a funo SolverFinish na macro para que fique semelhante ao seguinte cdigo de exemplo:

SolverFinishKeepFinal:=2,ReportArray:=Array(3)

para gerar vrios relatrios, modifique a funo SolverFinish para que fique semelhante ao seguinte cdigo de exemplo:

SolverFinishKeepFinal:=2,ReportArray:=Array(1,2)
Voltar para o incio

Como usar as funes do Microsoft ExcelSolver em uma macro de loop


Em muitas situaes, ele uma boa idia para que o Microsoft Excel Solver resolver a clula de destino para vrios valores. Geralmente, voc pode fazer isso usando um das estruturas de loop que esto disponveis com o VBA.

A macro Create_Square_Root_Table demonstra como o Microsoft Excel Solver funciona em uma macro de loop. O Create_Square_Root_Table macro cria uma tabela em uma nova planilha. Ele insere os nmeros de um por meio de dez e a raiz quadrada correspondente de cada nmero. A macro Create_Square_Root_Table cria a tabela usando um loop para iterar os nmeros de 1 a 10 e resolver a clula de destino no modelo raiz quadrada de um valor que coincida com o nmero da iterao. O cdigo a seguir descreve a macro Create_Square_Root_Table :

SubCreate_Square_Root_Table() 'Addanewworksheettotheworkbook. Setw=Worksheets.Add 'Putthevalue2incellC1andtheformula=C1^2incellC2. w.Range("C1").Value=2 w.Range("C2").Formula="=C1^2" 'Aloopthatwillmake10iterations,startingwiththenumber1, 'andfinishingatthenumber10. Fori=1To10 'SettheSolverparametersthatindicatethatSolvershould 'solvethecellC2forthevalueofi(whereiisthenumber 'oftheiteration)bychangingcellC1. SolverOkSetCell:=Range("C2"),ByChange:=Range("C1"),_ MaxMinVal:=3,ValueOf:=i 'DonotdisplaytheSolverResultsdialogbox. SolverSolveUserFinish:=True 'SavethevalueofiincolumnAandtheresultsofthe 'changingcellincolumnB.

w.Cells(i,1)=i w.Cells(i,2)=Range("C1") 'Finishanddiscardthefinalresults. SolverFinishKeepFinal:=2 Next 'CleartherangeC1:C2 w.Range("C1:C2").Clear EndSub


SolverFinish KeepFinal: = 2 Avanar ' limpar o intervalo C1:C2 w.Range("C1:C2").Clear end sub A macro Create_Square_Root_Table gera a tabela ilustrada na Figura 4.

A Figura 4. Sada gerada pela macro Create_Square_Root_Table

Voltar para o incio

Como trabalhar com restries


Uma restrio uma restrio no contedo de um ou mais clulas. Um modelo pode ter uma ou vrias restries. O conjunto de restrio um conjunto de inequaes ou um conjunto de equalities remover certas combinaes de valores para as variveis de deciso da soluo. Por exemplo, uma restrio pode exigir que uma clula ser maior que zero e outra clula conter apenas um valor inteiro.

O modelo raiz quadrada que abordamos at a esse ponto um modelo simples que no contenha quaisquer restries. A Figura 5 ilustra um modelo que usa restries. O objetivo desse modelo encontrar a melhor combinao de produtos para lucro mximo.

A Figura 5. Produto misturar com para diminuir a margem de lucro

Por exemplo, se uma empresa fabrica TVs, aparelhos e alto-falantes e usa um inventrio de partes comuns de fontes de alimentao, alto-falante cones e assim por diante. As partes so no fornecimento limitado. Seu objetivo determinar a combinao mais rentveis de produtos para criar. O lucro por unidade diminui com volume pois incentivos preo adicionais so necessrias para carregar o canal de distribuio. O expoente diminuio retorna 0,9. Este expoente usado para calcular o lucro por produto no intervalo G11:I11.

Seu objetivo localizar o lucro mximo (clula G14). Os valores que voc ir alterar para localizar o lucro mximo so o nmero de unidades que voc criar. O intervalo G9:G11 representa clulas variveis nesse modelo. Sua nica restrio que o nmero de partes que voc usar no pode exceder o nmero de partes que voc tenha na mo. Com o Microsoft Excel Solver, essa restrio aparece como E3:E7 < = B3:B7. Se voc fosse criar esse modelo do Microsoft Excel Solver interativamente, os parmetros do Microsoft Excel Solver devem ser semelhantes aos que esto na Figura 6.

A Figura 6. Parmetros do Microsoft Excel Solver para o produto misturar com modelo para diminuir a margem de lucro

Para criar e solucionar a combinao de produtos com modelo para diminuir a margem de lucro, voc usar uma nova funo, a funo SolverAdd , com as funes do Microsoft Excel Solver VBA que foram descritos anteriormente. A funo SolverAdd adiciona a restrio ao modelo. Executar a funo SolverAdd equivalente a clicar no boto Adicionar a caixa de dilogo Parmetros do Solver . A funo SolverAdd possui a seguinte sintaxe: SolverAdd (ref. clula Relation, FormulaText) As informaes a seguir descrevem a sintaxe para a funo SolverAdd :

ref. clula faz referncia a uma ou mais clulas que formam o lado esquerdo da restrio. relao a relao aritmtica entre o lados esquerdo e os direito de uma restrio. relao pode ser um valor entre 1 e 5 como no exemplo a seguir:

o o o o o

O valor 1 menor ou igual a (< =). O vaue 2 igual (=). O valor 3 maior que ou igual a (> =). O valor 4 um inteiro. O valor 5 o binrio (um valor de zero ou um).

FormulaText faz referncia a uma ou mais clulas que formam o lado direito da constraint.* *

**When voc especifica um intervalo de clulas para o argumento FormulaText da funo SolverAdd , observe se a referncia relativo ou absoluto. Em geral, voc deve especificar uma referncia absoluta para o argumento FormulaText . No entanto, se for especificado referncias relativas para o argumento FormulaText , percebe que a referncia ser relativas a clula de destino e no a clula ativa.

Observao No Microsoft Excel, verses 5.0 e 7.0, use a notao de L1C1 quando voc especifica uma clula ou um intervalo de clulas com o argumento FormulaText . Em contraste, no Microsoft Excel 97, usar o estilo A1 notao para especificar o argumento FormulaText .

A Figura 7. Os campos que esto associados com os argumentos SolverAdd

A macro Maximum_Profit que gera um modelo para a combinao de produtos com modelo de diminuio retorna. Essa macro executa as seguintes funes ou argumentos:

A funo SolverOK configura a clula de destino para um valor mximo e especifica as clulas para alterar. A funo SolverAdd adiciona a restrio ao modelo. A funo SolverSolve localiza uma soluo sem exibir a caixa de dilogo Resultados do Solver . A funo SolverFinish retorna os resultados finais para a planilha.

O cdigo a seguir descreve a macro Maximum_Profit :

SubMaximum_Profit() 'Setuptheparametersforthemodel. 'DeterminethemaximumvalueforthesumofprofitsincellG14 'bychangingthenumberofunitstobuildincellsG9:I9. Solveroksetcell:=Range("G14"),maxminval:=1,_ bychange:=Range("G9:I9") 'Addtheconstraintforthemodel.Theonlyconstraintisthatthe 'numberofpartsuseddoesnotexceedthepartsonhand 'E3:E7<=B3:B7 SolverAddCellRef:=Range("E3:E7"),Relation:=1,_ FormulaText:="$B$3:$B$7" 'DonotdisplaytheSolverResultsdialogbox. SolverSolveUserFinish:=True 'Finishandkeepthefinalresults. SolverFinishKeepFinal:=1

EndSub
Observao no Microsoft Excel, verses 5.0 e 7.0, use a notao de L1C1 quando voc especifica uma clula ou intervalo de clulas com o argumento FormulaText . Em contraste, no Microsoft Excel 97, usar o estilo A1 notao para especificar o argumento FormulaText .

Quando voc executa a macro Maximum_Profit , o Microsoft Excel Solver encontrar uma soluo de criao de conjuntos de TV 160, aparelhos 200 e alto-falantes 80 para um mximo lucro de r$ 14,917 dlares. Voltar para o incio

Como alterar e excluir restries


Restries em seu modelo podem ser atravs de programao alteradas ou excludas. Restries so identificadas por seus ref. clula e argumentos de relao .

Para alterar programaticamente uma restrio existente, use a funo SolverChange . A seguir est a sintaxe para o SolverChange funo: SolverChange (ref. clula Relation, FormulaText) Observe que os argumentos da funo SolverChange so iguais aos que voc use com a funo SolverAdd .

Se voc quiser alterar a restrio na combinao de produtos com modelo de diminuio retorna, voc deve usar a funo SolverChange . Por exemplo, no momento da restrio que especificada que o nmero de partes usadas menor ou igual ao nmero de partes disponvel (E3:E7 < = B3:B7). Se voc quiser alterar essa restrio para que o nmero de partes usada menor ou igual ao nmero do partes projetado (nmero de partes em mo) mais o nmero de partes solicitada. Essa nova restrio aparncia E3:E7 < = D3:D7. A seguinte macro alteraria o existente E3:E7 restrio < = B3:B7 para E3:E7 < = D3:D7 e resolve para uma soluo.

O cdigo a seguir descreve a macro Change_Constraint_and_Solve :

SubChange_Constraint_and_Solve() 'Changetheconstraint. SolverChangeCellRef:=Range("E3:E7"),Relation:=1,_ FormulaText:="$D$3:$D$7" 'ReturntheresultsanddisplaytheSolverResultsdialogbox. SolverSolveUserFinish:=False EndSub


SolverSolve UserFinish: = False end sub como restries so identificadas pelo ref. clula e argumentos de relao , voc s poder alterar o argumento FormulaText para a restrio usando a funo SolverChange . Se o ref. clula e os valores de relao no corresponderem uma restrio existente, voc deve excluir a restrio e, em seguida, adicionar a restrio modificada. Para excluir uma restrio, use a funo SolverDelete . A sintaxe para a funo SolverDelete o seguinte:

SolverDelete (ref. clula Relation, FormulaText)

Observe que os argumentos da funo SolverDelete so iguais s que voc usar com o SolverAdd e as funes de SolverChange .

A macro a seguir ilustra como excluir e adicionar uma restrio. Neste exemplo, a macro Change_Constraint_and_Solve2 remover a restrio E3:E7 < = B3:B7 da combinao de produtos com modelo de diminuio retorna e adiciona uma nova restrio. A restrio nova apenas uma modificao da restrio original, onde os lados esquerdo e direito da restrio sero revertidos.

O cdigo a seguir descreve a macro Change_Constraint_and_Solve2 :

SubChange_Constraint_and_Solve2() 'Reversetheleftandrightsidesoftheconstraint... 'DeletetheconstraintE3:E7<=B3:B7andaddthe 'constraintB3:B7>=E3:E7. SolverDeleteCellRef:=Range("E3:E7"),Relation:=1,_ FormulaText:="$B$3:$B$7" SolverAddCellRef:=Range("B3:B7"),Relation:=3,_ FormulaText:="$E$3:$E$7" 'ReturntheresultsanddisplaytheSolverResultsdialogbox. SolverSolveUserFinish:=False EndSub
Observao no Microsoft Excel, verses 5.0 e 7.0, use a notao de L1C1 quando voc especifica uma clula ou intervalo de clulas com o argumento FormulaText . Em contraste, no Microsoft Excel 97, usar o estilo A1 notao para especificar o argumento FormulaText . Voltar para o incio

Como carregar e salvar seus modelos


Quando voc salva sua pasta de trabalho, os ltimos parmetros que voc especificado na caixa de dilogo Parmetros do Solver so salvas com a pasta de trabalho. Portanto, quando voc abre a pasta de trabalho, os parmetros so as mesmas quando voc salvou a pasta de trabalho pela ltima vez.

Voc pode definir mais de um problema para uma planilha. Cada problema composto de clulas e restries que voc inserir nos Parmetros do Solver e as caixas de dilogo Opes do Solver . Como o ltimo problema salvo com a planilha, voc perder todos os outros problemas, a menos que voc salv-las explicitamente. Para salv-las, clique em Salvar modelo no Solver opes caixa de dilogo. Da mesma forma, quando voc deseja restaurar os parmetros salvas anteriormente, clique em modelo de carga na caixa de dilogo Opes do Solver .

Modelos do Solver so armazenados em um intervalo de clulas em uma planilha. A primeira clula do intervalo contm a frmula para a clula de destino. A segunda clula no intervalo contm a frmula que identifica as clulas variveis no modelo. A ltima clula no intervalo contm uma matriz que representa as opes que definiu na caixa de dilogo Opes do Solver . As clulas entre a clula a segunda e a ltima clula contm as frmulas que representam as restries no modelo.

A Figura 8 ilustra um modelo para agendamento de funcionrio. Suponha que voc trabalha para um fabricante de pequena empresa. Esta tabela mostra taxa por hora cada funcionrio s de pagamento, o nmero de horas que eles so agendados e um nmero projetado de unidades de que cada funcionrio pode produzir em uma hora. Seu objetivo atender uma cota especfica para o nmero de unidades produzido ao mesmo tempo em que o custo de mo-de-obra.

A Figura 8. Funcionrio modo de agendamento l

Dois fatores adicionais (ou restries) que voc deve considerar o nmero de mnimo/mximo de horas que qualquer

um funcionrio pode trabalhar e o nmero de unidades que voc deseja produzir. Se para uma semana especificada, voc precisa produzir 3975 unidades e desejar que cada funcionrio trabalhar entre 30 e 45 horas, os parmetros do Microsoft Excel Solver devem ser semelhantes aos descrito na tabela a seguir:

parmetro

intervalo de clula descrio Custo de mo-de-obra. Horas trabalhadas por funcionrio. Nmero mximo de horas por funcionrio 45. Mnimas de horas por funcionrio 35. Nmero de unidades 3975.

Clula de destino $ D $12 Clulas variveis Restries $C$2: $C$8 $C$2: $C$8 < = 45 $C$2: $C$8 > = 30 G $ $ 12 = 3975

Seus objetivos so resolver para custos de mo-de-obra ideal em uma base semanal, para salvar cada modelo semanalmente e ser capaz de carregar qualquer modelo semanal quando necessrio.

Em uma macro, os parmetros do Microsoft Excel Solver para um modelo podem ser salvo e carregados pelo usando o SolverSave e as funes de SolverLoad respectivamente. O SolverSave e as funes de SolverLoad tm a seguinte sintaxe:

SolverSave (SaveArea)

solverLoad (LoadArea)

O SolverSave e as funes de SolverLoad tm apenas um argumento, SaveArea e os argumentos LoadArea respectivamente. Esses argumentos especificar um intervalo em uma planilha em que as informaes de modelo so armazenadas.

A seguinte macro New_Employee_Schedule demonstra como para criar, para resolver e para salvar um modelo baseado na entrada do usurio. O usurio solicitado a fornecer a data do modelo, o nmero de unidades para produzir e o nmero mnimo e mximo de horas por funcionrio. Esses dados, em seguida, usado para criar o modelo. O modelo resolvido e, em seguida, salva com a entrada do usurio.

O cdigo a seguir descreve a macro New_Employee_Schedule :

SubNew_Employee_Schedule() 'Prompttheuserforthedateofthemodel,theunitstoproduce, 'andthemaximumandminimumnumberofhoursperemployee.

ModelDate=Application.InputBox(_ Prompt:="DateofModel:",Type:=2) Units=Application.InputBox(_ Prompt:="ProjectedNumberofUnits:",Type:=1) MaxHrs=Application.InputBox(_ Prompt:="MaximumNumberofHoursPerEmployee:",Type:=1) MinHrs=Application.InputBox(_ Prompt:="MinimumNumberofHoursPerEmployee:",Type:=1) 'ClearanypreviousSolversettings. SolverReset 'Setthetargetcell,D12,toaminimumvaluebychanging 'therange,C2:C8. SolverOkSetCell:=Range("$D$12"),MaxMinVal:=2,_ ByChange:=Range("C2:C8") 'Addtheconstraintthatnumberofhoursworked<=MaxHrs. SolverAddCellRef:=Range("C2:C8"),Relation:=1,FormulaText:=MaxHrs 'Addtheconstraintthatnumberofhoursworked>=MinHrs. SolverAddCellRef:=Range("C2:C8"),Relation:=3,FormulaText:=MinHrs 'Addtheconstraintthatnumberofunitsproduced=Units. SolverAddCellRef:=Range("G12"),Relation:=2,FormulaText:=Units 'Solvethemodelandkeepthefinalresults. SolverSolveUserFinish:=True SolverFinishKeepFinal:=1 'SavetheinputvaluesforModelDate,MaxHrs,MinHrs,andUnits 'incolumnsI:L. SetModelRange=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) 'SavethemodelparameterstotherangeM:Rintheworksheet.

SolverSaveSaveArea:=ModelRange.Offset(,4).Resize(1,6) EndSub
Observao no Microsoft Excel, verses 5.0 e 7.0, use a notao de L1C1 quando voc especifica uma clula ou intervalo de clulas com o argumento FormulaText . Em contraste, no Microsoft Excel 97, usar o estilo A1 notao para especificar o argumento FormulaText .

A Figura 9 ilustra como as informaes de modelo salvo aparecem na planilha.

A Figura 9. Informaes de modelo que so salvas, a macro New_Employee_Schedule Expandir esta imagem

A macro New_Employee_Schedule salva cada novo modelo de planilha. A macro Load_Employee_Schedule pode carregar um desses modelos salvos. A macro solicita ao usurio para o modelo para carregar e, em seguida, procura a coluna que para a data de modelo. Se a data do modelo for encontrada, a macro Load_Employee_Schedule carrega o modelo correspondente, resolve-lo e, em seguida, mantm os resultados finais.

O cdigo a seguir descreve a macro New_Employee_Schedule :

SubLoad_Employee_Schedule() 'Promptforthedateofthemodel. ModelDate=Application.InputBox(_ Prompt:="DateofModeltoLoad:",Type:=2) 'LocatethedateincolumnI. SetDateRange=Range("I2").CurrentRegion.Resize(,1) r=Application.Match(ModelDate,DateRange,0) IfIsError(r)Then 'Displayamessageifthemodeldateisnotfound MsgBox"Cannotfindamodelwiththedate"&ModelDate

Else 'Ifthemodeldateisfound,loadthemodelintoSolver, 'solvethemodel,andkeepthefinalresults. SolverLoadLoadArea:=DateRange.Offset(r1,4).Resize(1,6) SolverSolveUserFinish:=True SolverFinishKeepFinal:=1 EndIf EndSub


a macro New_Employee_Schedule apresenta a funo SolverReset . O SolverReset funo pode ser usada para excluir todas as selees de clula e restries na caixa de dilogo Parmetros do Solver e para redefinir todas as configuraes em A funo SolverReset possui sem argumentos. Voltar para o incio

Como encontrar mais informaes sobre o Microsoft Excel Solver


Os seguintes recursos fornecem informaes sobre como usar o Microsoft Excel Solver add-in.

Para obter ajuda com mensagens solver especficas, consulte Frontline Systems. Para obter dicas sobre a criao de legvel, gerenciveis modelos, consulte Frontline Systems. Para obter informaes adicionais sobre o recurso Solver limites para restries e, clique no nmero abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:

75714 Limites do Solver para restries

Para vrios exemplos que usar o suplemento do Microsoft Excel Solver no Microsoft Excel, consulte o arquivo de exemplo Exemsolv.xls. A seguir o local do padro do arquivo de exemplo que acompanha o Microsoft Excel 97:

\Program Files\Microsoft Office\Office\Examples\Solver\SolvSamp.xls

A seguir o local do padro do arquivo de exemplo que acompanha o Microsoft Excel 7.0:

\MSOffice\Excel\Examples\Solver\SolvSamp.xls

A seguir o local do padro do arquivo de exemplo que acompanha o Microsoft Excel 5.0:

\Excel\Examples\Solver\SolvSamp.xls

Voltar para o incio

Como saber mais sobre o algoritmo e mtodos que so usados pelo Microsoft Excel Solver
Microsoft Excel Solver usa o gradiente generalizada reduzida cdigo de otimizao no linear (GRG2) que foi desenvolvido por Leon Lasdon, Universidade do Texas em Austin e Allan Waren, Universidade do Estado de Cleveland.

Para obter informaes adicionais sobre o algoritmo usado pelo Microsoft Excel Solver, clique o nmero abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft: 82890 O Solver usa generalizada reduzida

Problemas de linear e inteiro usar o mtodo simplex com limites nas variveis e o mtodo de ramificao e ligado, implementado por John Watson e Dan Fylstra, Frontline Systems, Inc. Para obter mais informaes sobre o processo de soluo interno usado pelo Solver, contate:

FrontlineSystems,Inc. P.O.Box4288 InclineVillage,NV894504288 (702)8310300 Website:http://www.frontsys.com Electronicmail:info@frontsys.com


P.O. Box 4288 vila inclinada, NV 89450-4288 (702) 831-0300 site: http://www.frontsys.com email eletrnica: info@frontsys.com

Selees de cdigo de programa so o Microsoft Excel Solver copyright 1990, 1991, 1992 e 1995 Frontline Systems, Inc. partes so copyright 1989, optimal mtodos, Inc.

Observao O suplemento do Microsoft Excel Solver descrita neste artigo fornecido "como esto" e ns no garante que ele pode ser usado em todas as situaes. Embora os profissionais de suporte da Microsoft possam ajudar com a instalao e a funcionalidade existente desse suplemento, eles no modificaro o add-in para fornecer nova funcionalidade.

nenhuma garantia . O software fornecido " como-, " sem garantia de qualquer tipo e qualquer uso deste software produto est em seu prprio risco. Voltar para o incio

A informao contida neste artigo aplica-se a:

Microsoft Excel 97 Standard Edition

Vo oltar para o in ncio

Pala avras-chave kbmt kbhowto kbmacr e: roexample kb berrmsg kbad ddin kbvba kb bprogrammin kbinfo KB8 ng 843304 KbMt tpt
Vo oltar para o in ncio Traduo auto T omtica IMPO ORTANTE: Es artigo foi traduzido por um sistema de traduo automtica (tambm de ste a o esignado por Machine Tran nslation ou MT no tendo sido portan traduzido ou revisto po pessoas. A Microsoft po T), o nto or ossui artigos traduzidos p por aplic caes (MT) e artigos trad duzidos por tr radutores pro ofissionais, co o objetivo de oferecer em portugus a totalidad om o r de dos artigos existe entes na base de dados de suporte. No entanto, a traduo aut e o tomtica no sempre pe erfeita, poden ndo vocabulrio, s sintaxe ou gramtica. A M Microsoft no responsve por incoer el ncias, erros ou prejuzos s conter erros de v rridos em dec corrncia da u utilizao dos artigos MT por parte dos nossos clien s s ntes. A Micro osoft realiza atualizaes a ocor freq entes ao sof ftware de tra aduo autom mtica (MT). C Caso venha a encontrar e erros neste ar rtigo e queira colaborar no a proc cesso de aper rfeioamento desta ferram menta, por favor preencha o formulrio existente na parte inferior desta a o pgina. Obrigado o. ue 843304 Cliqu aqui para ver a verso em Ingls deste artigo: 8 Vo oltar para o in ncio Aviso de Isen A o de Respo onsabilidade s sobre Conte do do KB Ap posentado Este artigo trata de produtos para os quais a Microsoft no mais ofe t erece suporte Por esta ra e. azo, este artigo oferecido "com est" e n ser mais atualizado. mo o Vo oltar para o in ncio