Notifications
Clear all

Instruçao For com Uma Matriz

4 Posts
2 Usuários
0 Reactions
1,005 Visualizações
(@valcir)
Posts: 20
Eminent Member
Topic starter
 

Ola, Na rotina abaixo tenho um codigo FOR de 1 a 4
Apos colocar (1,2,3,4) na coluna ("A1"), Faz um procv e Busca na Matriz que esta nas celulas("EB3 a EH6") os Numeros Correspondentes.
Ficando assim:
1 8 15 18 31 33 36
2 8 15 18 31 33 37
3 8 15 18 31 33 51
4 8 15 18 31 36 37
Preciso excluir esta etapa do procv, Preciso fazer o FOR Direto com a Matriz.
para que o resultado do For Fique assim
8 15 18 31 33 36
8 15 18 31 33 37
8 15 18 31 33 51
8 15 18 31 36 37

Veja o Codigo
Private Sub CommandButton1_Click()
Set W = Plan5
W.Select
Col = 1
Ln = 2

For A = 1 To 4
Cells(Ln, Col) = A
Ln = Ln + 1

With W.Range("G2")
.Select
.FormulaR1C1 = "=IFERROR(VLOOKUP(RC1,R3C132:R1000C251,R1C,0),"""")"
.Copy
End With

Set UltCel = W.Cells(W.Rows.Count, 1).End(xlUp)
W.Range("g2:DU" & UltCel.Row).PasteSpecial
Next A
End Sub
Planilha Anexo
Agradeço qualquer ideia obrigado

 
Postado : 13/03/2017 10:18 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde valcir,

Os resultados do código dependem de uma PROCV() que está atrelada aos valores da coluna A. Por isso coloquei um trecho que copia e cola apenas os valores e depois no fim do código apago os valores da coluna A.

Teste e de retorno.

att,

 
Postado : 13/03/2017 11:56 am
(@valcir)
Posts: 20
Eminent Member
Topic starter
 

Ola Bruno obrigado pelo retorno. Porem preciso de uma maneira de excluir o PROCV da rotina, Este "FOR" faz um Loop de 100mil vezes, demora horas e horas processando devido a este Procv.
Sera que nao existe uma Maneira de Fazer este loop direto na Matriz.

Obrigado.

 
Postado : 13/03/2017 9:43 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde valcir,

Olhando mais detalhadamente seu código, o PROCV não deve ser retirado da rotina e sim de dentro do FOR. Do jeito que você escreveu o PROCV() é copiada a cada linha do processo, mas ele só precisa ser feito uma vez no final da rotina quando já tiver a referência do número de linhas (Coluna A).

Então coloquei o For para gerar os números de referência na coluna A, e logo em seguia o PROCV faz sua busca apenas uma vez. Essa alteração que fiz já vai reduzir significantemente o tempo de processo, quando você desmarcar os comandos que deixei especificado no código o tempo de processo deve cair para 1/3 (pelas minha experiência).

Mesmo com 100 mil linhas não acredito que esse processo leve mais de uma hora não (claro que depende do seu processador).

Teste e de retorno.

att,

 
Postado : 14/03/2017 12:33 pm