Solver e VBA no Excel 2010

MR
Marcos Rieper

Especialista em Excel

24 de abril de 2011 Atualizado 08 de julho de 2026 4 min de leitura
Solver e VBA no Excel 2010

Solver e VBA no Excel 2010

Objetivo: Demonstrar com um exemplo simples como automatizar a aplicação do Solver utilizando VBA.

//

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

 

Solver é uma poderosa ferramenta de análise, utilizada para a otimização e simulação de modelos de negócios e engenharia.Pode ser ainda mais poderosa, se usado em conjunto com VBA, para automatizar a solução de vários modelos que utilizam parâmetros de entrada diferentes e restrições.

Este suplemento do Excel serve para a solução de problemas lineares, simples não-lineares e complexos.

No exemplo que faremos neste artigo nós resolveremos o seguinte problema:

Em uma lista de valores com casas decimais precisamos encontrar quais que somados chegam a um determinado valor.

Para isso:

  • Ativar o suplemento Solver, clique em Arquivo->Opções->Suplementos e selecione o Suplemento Solver na tela que segue.
  • Crie uma lista na coluna A com valores aleatórios utilizando a fórmula: =ARRED(ALEATÓRIOENTRE(1000;100000)+ALEATÓRIO();2), esta lista não deve ter tantos números, mais ou menos uns 15.
  • Copie e cole somente valores estes números nesta coluna, desta forma teremos uma lista de valores fixos para trabalharmos.
  • Some alguns destes valores aleatoriamente e salve na célula E1, este será nosso objetivo.
  • Na célula B1 digite o valor 1, e na célula C1 digite a fórmula =A1*B1.
  • Na célula E2 digite =SOMA(C1:C38).
  • Teremos a seguinte planilha:
  • Agora já temos a planilha preparada para aplicarmos o Solver e conseguirmos o nosso objetivo.

Automatizando o Solver

  • Clique na guia Desenvolvedor, clique em Gravar Macro e configure a tela conforme abaixo:
  • Clique na guia Dados e no botão Solver, ele ficará no canto direito superior da tela.
  • No campo Set Objective selecione a célula $E$2, esta fórmula é a que irá ser alterada conforme os parâmetros passados.
  • No campo Value Of digite o valor da célula E1, você não conseguirá digitar.
  • No campo By Changing Variable Cells selecione o intervalo: $B$1:$B$19.
  • Clique no botão Add e na tela que segue você deve selecionar a Cell Reference a célula $B$1 no campo que segue selecione Bin que no caso significa que este campo apenas aceitará valores binários (1 ou 0).
  • Clique no botão Solve e ao mostrar a mensagem clique em OK.
  • Selecione a guia Desenvolvedor e clique em Parar Gravação.
  • Clique no botão Visual Basic e selecione o módulo 1 que foi criado pela gravação da macro.
  • Aqui você já terá a macro gravada para gerar a mesma solução automaticamente, mas vamos imaginar que a lista de valores muda, desta forma você terá que alterar a macro com algumas adaptações.
  • O suplemento Solver precisa ser ativado também para o VBA, então a primeira coisa que você deve fazer é ativar esta referência.
  • Para isso selecione no VBA o menu Ferramentas->Referências e na lista selecione Solver.
    • SolverOk SetCell:="$E$2", MaxMinVal:=3, ValueOf:=Range("E1").Value, ByChange:="$B$1:$B$" & iTotalLinhas _

     

Agora já fiz as devidas alterações no código para que tudo que fizemos e gravamos na Gravação de Macros seja adaptado para qualquer quantidade de números que se tenha na lista de valores.

Sub lsAutoSolver()
    Dim i               As Long
    Dim iTotalLinhas    As Long

    SolverReset

    iTotalLinhas = Cells(Rows.Count, 1).End(xlUp).Row

    Range("B1").Select
    Selection.Copy
    Range("B2:B" & iTotalLinhas).Select
    ActiveSheet.Paste
    Range("C1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("C2:C" & iTotalLinhas).Select
    ActiveSheet.Paste
    Range("E2").Select

    SolverOk SetCell:="$E$2", MaxMinVal:=3, ValueOf:=Range("E1").Value, ByChange:="$B$1:$B$" & iTotalLinhas _
        , Engine:=1, EngineDesc:="GRG Nonlinear"

    While i <= iTotalLinhas
        SolverAdd CellRef:="$B$" & i, Relation:=5, FormulaText:="binary"
        i = i + 1
    Wend

    SolverSolve
End Sub

Sobre os comandos do Solver:

SolverReset: Limpa todas as configurações do Solver

SolverOk: Cria um novo cálculo do Solver, passando as configurações como os campos de fórmula, o tipo de cálculo e a lista de células variáveis.

SolverAdd: Adiciona restrições para o cálculo do Solver.

SolverSolve: Efetua o cálculo do Solver. Variação SolverSolve True, desta forma não mostrará a tela, apenas serão alteradas as variáveis.

Você pode fazer o download da planilha com o código fonte e o exemplo completo do Solver no botão abaixo.

Os cálculos para este exemplo podem demorar bastante, dado a complexidade do cálculo, sugiro até você tentar encontrar sozinho os números que somados chegam ao valor.

Para o cálculo feito pelo Solver o tempo irá variar conforme a capacidade do processador do seu computador.

Também pode ver mais sobre o solver em: http://guiadoexcel.com.br/como-utilizar-o-solver-3

http://www.linhadecodigo.com.br/artigo/803/Tudo-o-que-voc%C3%AA-precisa-saber-sobre-o-Solver-no-Excel.aspx
Download — baixe aqui: Solver e VBA

Preencha seus dados para receber o link de download no seu e-mail.

Principais recursos

Confira o que este material oferece para você.

Organização por data e etapas
Classificação automática
Ranking e destaques
Fluxos e etapas automáticas
Dashboard com indicadores
Atualização automática por fórmulas

Perguntas frequentes

O material é realmente gratuito?

Sim. O acesso é gratuito e não exige cadastro.

Preciso ter o Excel instalado?

Recomendamos o Excel 2013 ou superior para todos os recursos.

Como faço para receber atualizações?

As atualizações são automáticas dentro da própria planilha.

Funciona no Excel do Mac?

Sim, funciona no Excel para Windows e para Mac.

Funciona no celular?

É possível visualizar no app do Excel; a edição completa é no computador.

Planilhas relacionadas

Planilha de Fluxo de Caixa

Planilha de Fluxo de Caixa

(1.327)

R$ 89,90

Controle de Estoque

Controle de Estoque

(962)

R$ 69,90

Planilha Financeira Empresarial

Planilha Financeira Empresarial

(1.254)

R$ 79,90

Dashboard Financeiro no Excel

Dashboard Financeiro no Excel

(689)

R$ 49,90

Continue lendo

Curso Excel Master — Básico ao Avançado, VBA, PowerPoint e mais

Receba conteúdos e novidades direto no seu e-mail

Dicas, tutoriais, planilhas gratuitas e muito mais.

Não enviamos spam. Cancele quando quiser.

Download imediato

Acesso na hora após a compra

Compra 100% segura

Seus dados protegidos com SSL

Acesso vitalício

Use para sempre, sem mensalidades

Suporte via WhatsApp

Atendimento rápido e humanizado