Notifications
Clear all

INSTRUÇAO (" FOR") GERANDO UMA MATRIZ LENTA

7 Posts
3 Usuários
0 Reactions
1,650 Visualizações
(@valcir)
Posts: 20
Eminent Member
Topic starter
 

A planilha faz 3 Rotina ( "FOR" )ou Mais . No exemplo abaixo 3 For
For ("A")
For("B")
For("C")
Após excuçao dos 3 For gera o primerio resultado.
Salvando na Plan5 e Coluna ("A").
Exemplo:
1
2
3
NA sequencia faz um PROCV com a Matriz que esta na Plan5 ("EB3:EH30")
Esta nova matriz gerada pelo procv vai pra Plan4 range("C3:P6")
Na sequencia Plan3, pega o resultado da plan4. confere a matriz gerada se atende ao criterio da Plan3 celula ("T3" ) . Se atender para todo o processamento. Se não Volta para os For e faz tudo novamente.
A planilha esta funcionando corretamente, porem demora muito o processamento quando informo numeros maiores
Alguem pode analisar como fazer para melhorar o desenpenho.

 
Postado : 15/03/2017 12:35 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Valcir, eu li seu código e apesar denão ter tempo agora, posso afirmar que seu problema tem solução e dá pra acelerar e muito o seu código. Mas o primeiro que preciso que você faça, é indentar seu código.
Isso é essencial para que você mesmo entenda cada pedaço.

Uma das regras das práticas da programação, é quebrar seu código em blocos, e não criar rotinas muito maiores que uma tela...

Infelizmente não poderei fazer agora pois vai demandar tempo, que eu não tenho...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/03/2017 9:41 am
(@valcir)
Posts: 20
Eminent Member
Topic starter
 

O obrigado pela dica, Tempo e complicado mesmo, vou continuar aguardando quem sabe alguem possa me ajudar. A proposito assisti seu video sobre ARRAY ,muito bom.

 
Postado : 16/03/2017 12:17 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde valcir,

Dei uma olhada por cima do seu código e como falando pelo colega Fernando, a indentação não está boa. Fica difícil de tentar entender o que está acontecendo.

Uma solução de imediato para acelerar o processo é adicionar os seguintes comandos no começo e no fim do código:

    Application.Visible = False
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.DisplayStatusBar = False

------------- Seu código --------------------
    Application.Visible = True
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.DisplayStatusBar = True

Talvez desabilitar o calculo manual ajude na velocidade também:

    Application.Calculation = xlCalculationManual    
------------- Seu código --------------------
    Application.Calculation = xlCalculationAutomatic

att,

 
Postado : 16/03/2017 2:23 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O obrigado pela dica, Tempo e complicado mesmo, vou continuar aguardando quem sabe alguem possa me ajudar. A proposito assisti seu video sobre ARRAY ,muito bom.

E é exatamente isso que pretendo utilizar para acelerar seu código... dentre muitas outras coisas !

Ah, Valcir, por alguma razão, meu MP não está enviando mensagens...

Me escreva no endereço [email protected]

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/03/2017 3:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia Valcir, tudo bom?
Peguei seu arquivo e conforme combinamos, realizei as alterações para inclusão do conceito de trabalho com matrizes/arrays em VBA.

Tivemos uma melhoria em desempenho médio de 90%. Ou seja, ao rodar todas as suas combinações, no meu computador, a execução levava 8,59 horas (ou, 515 minutos, ou quase 31mil segundos).
Depois das minhas alterações, ao rodar todas as combinações possíveis, a execução passou a levar quase 0,93h (ou seja, quase 1 hora), (ou, 56 minutos, ou quase 3,4mil segundos).

Coloco o arquivo aqui à disposição de quem quiser aprender e estudar as diferenças, e para você, Valcir. Obrigado pela oportunidade de ajudar!

Um abraço!

FF

p.s.: ainda tem espaço para mais melhoria...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2017 4:44 am
(@valcir)
Posts: 20
Eminent Member
Topic starter
 

Ola Fernando Excelente trabalho, ficou fantastico. O que Antes levaria horas para rodar, com as mudanças que voce fez esta fazendo em minutos.
Muito obrigado mesmo. Estou Assistindo aos seus Videos no Youtube, e esta me ajundando a entender este mundo da programaçao.
Recomendo quem quiser aprender mais sobre o Vba/ Assista aos video dos Fernando.

Valeu.

 
Postado : 29/03/2017 12:07 pm