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.
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
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.
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,
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 planilhas.excel@outlook.com
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
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
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.