Notifications
Clear all

Regressão Linear em VBA

9 Posts
3 Usuários
0 Reactions
2,583 Visualizações
(@trindade)
Posts: 0
New Member
Topic starter
 

Boa tarde, Srs.

Estou tentando fazer um calculo de regressão linear, mas de forma a ficar "Automática" , coloquei o Excel para gravar a macro, até aqui tudo tranquilo, realizei a seleção dos eixos y e x marquei as opções que me interessam e pronto feita a regressão ... Tudo beleza! Parei a macro.

Quando vou executar a macro novamente apresenta o seguinte erro:

Encontrei na internet que seria necessário colocar colchetes na chamada do modulo ficando da seguinte forma: Application.Run "[ATPVBAEN.XLAM]!Regress", não deu certo.
Em um outro lugar encontrei que a chamada deveria ser através do nome da ferramenta Application.Run "'Analysis Toolpak - VBA'!Regress", mas também não deu certo. https://support.microsoft.com/pt-br/kb/192642

Gostaria de saber se existe a possibilidade de realizar o calculo da regressão linear via VBA, deixando da seguinte forma:

Gostaria de uma ajuda dos senhores com mais esse problema.

 
Postado : 21/03/2016 9:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Anexe a planilha, só por imagem fica um pouco mais dificil.

 
Postado : 21/03/2016 11:05 am
(@edsonbr)
Posts: 0
New Member
 

Olá, Trindade, boa tarde!

Será que vc não esqueceu de ativar o suplemento "Ferramentas de Análise - VBA" antes?: (Arquivo>Opções>Suplementos>Gerenciar - Suplementos do Excel)

Depois de ativá-lo, se vc marcar no VBE a referência a "atpvbaen.xls" nem precisa usar o método Run do Application, pode usar direto o método Regress...

 
Postado : 21/03/2016 1:09 pm
(@trindade)
Posts: 0
New Member
Topic starter
 

Boa tarde, EdsonBR.

Obrigado, não sabia desse detalhe de ativar o suplemento, valeu pela dica, vou utilizar desse modo e em meu projeto.

 
Postado : 21/03/2016 2:49 pm
(@trindade)
Posts: 0
New Member
Topic starter
 

Boa noite, Galera.

Na empolgação fechei o tópico, mas depois caiu a ficha.
Nosso colega EdsonBR, postou uma solução que me atendeu ao realizar as marcações do Suplemento > Referencias, porem eu não consegui passar o resultado do calculo de regressão para a Plan com solução apresentada por ele Regress.

Tópico Matriz
http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=19612

Gostaria mais uma vez de uma ajuda dos senhores.

 
Postado : 21/03/2016 4:17 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Reabri o tópico, assim pode continuar no mesmo.
Se puder anexar o modelo que está utilizando, ficará mais fácil ajudar.

 
Postado : 21/03/2016 4:31 pm
(@trindade)
Posts: 0
New Member
Topic starter
 

Obrigado, Mauro Coutinho.

Segue exemplo que estou utilizando ...
Hoje consegui fazer aplicação funcionar da seguinte forma:

' CALCULO FUNCAO REGRESSAO
     Application.Run "ATPVBAEN.XLAM!Regress", Intevalo_Y, _
        Intevalo_X, False, True, Nivel_Confianca, Plan16.Range("A1") _
        , True, False, False, False, , False

Para funcionar o botão REGRESSÃO é necessário ter mais de uma estação no Listbox - Selecionadas, depois clicar no botão gerar gráfico que o botão REGRESSÃO irá funcionar e montar a regressão ... fim!

Gostaria de saber como faço para fazer funcionar com o código indicado pelo EdsonBR e se irá retornar as mesmas informações.

 
Postado : 21/03/2016 4:54 pm
(@edsonbr)
Posts: 0
New Member
 

Bom dia, Trindade!

Primeiramente deixe-me corrigir uma bobagem dita por mim no post anterior: Regress na verdade é uma Sub (procedure) contida no suplemento e não um método como eu tinha falado. Portanto, vc pode continuar usando o método Run como vc vinha fazendo ou, se vc referenciou como dito, usar direto. O resultado é o mesmo, como é de se esperar, só a maneira de ter acesso é que muda. Vc pode comprovar selecionando a atpvbaen.xls no pesquisador de objetos e verificar que ela é uma dentre muitas das Subs que estão lá disponíveis. Há ainda uma outra forma de acessar que não recordo no momento mas talvez algum outro colega possa querer enriquecer o tópico e trazê-la prá nós.

Para testar, comentei o bloco Application.Run e inseri o Regress direto, usando para cada argumento a variável correspondente e omitindo as ausentes (no teste, ficou idêntico, como esperado).

Private Sub Regressao()
...
...
...
     ' CALCULO FUNCAO REGRESSAO
'     Application.Run "ATPVBAEN.XLAM!Regress", Intevalo_Y, _
'        Intevalo_X, False, True, Nivel_Confianca, Plan16.Range("A1") _
'        , True, False, False, False, , False

      Regress inpyrng:=Intevalo_Y, _
              inpxrng:=Intevalo_X, _
              constant:=False, _
              Labels:=True, _
              confid:=Nivel_Confianca, _
              soutrng:=Plan16.Range("A1"), _
              residuals:=True, _
              sresiduals:=False, _
              rplots:=False, _
              lplots:=False, _
              nplots:=False
              
    ' AJUSTA O TAMANHO DAS COLUNAS
...
...
...
End Sub
 
Postado : 22/03/2016 10:15 am
(@trindade)
Posts: 0
New Member
Topic starter
 

Ficou muito da hora a regressão com o código que passou.

Mais um vez obrigado.

Agora sim posso colocar como RESOLVIDO o tópico !!!

 
Postado : 22/03/2016 10:38 am