Notifications
Clear all

Substituindo fórmula por macro.

7 Posts
2 Usuários
0 Reactions
954 Visualizações
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Caros colegas boa tarde.

Estou com um problema e necessito de ajuda.
Tenho esta planilha de controle e coloquei uma fórmula para copiar automaticamente os dados de uma aba para outra.
O problema e que como existe fórmula em várias células a planilha esta muito pesada e as vezes trava.
Queria substituir a fórmula (PROCV) por uma macro vba.
Será que teria como fazer isso.
O critério é verificar o No Registro na aba TODOS_DADOS e depois copiar os dados da aba PARA_CONTATAR do intervalo N:AA

Minha planilha ultrapassa o tamanho limite então estou postei no sendspace.
https://www.sendspace.com/file/njq47c

Espero que alguém possa me ajudar.

Abraços.
Fabiosp

 
Postado : 10/07/2014 9:47 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Consegue copiar para outra guia sozinho?

 
Sub AleVBA_12446()
    Dim lastrow As Long
    Dim Rng As Range
    lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    
    Set Rng = Range(Cells(2, "N"), Cells(lastrow, "AA"))
    Application.ScreenUpdating = False
        Range("N2").Select
        Range("N2").Formula = "=VLOOKUP($A2,PARA_CONTATAR!$A$8:$AA$170,column(),0)"
        Range("N2").AutoFill Destination:=Range(Selection, Selection.Offset(0, 13))
        Range("N2:AA2").AutoFill Destination:=Rng, Type:=xlFillDefault
        Range("N2:AA" & lastrow).Value = Range("N2:AA" & lastrow).Value
    Application.ScreenUpdating = True
     
End Sub

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

 
Postado : 10/07/2014 10:21 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendi,
o numero de registro na planilha "TODOS_DADOS" se repete, porem com nome de cliente diferente, na planilha "PARA_CONTATAR" tambem, inclusive com nome diferente da primeira?
Na planilha "TODOS_DADOS" há registros que não estão em "PARA_CONTATAR", e vice - versa ?
Para que o Sufixo?
Porque o Proc inicia em A8 e não em A2?

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

 
Postado : 10/07/2014 10:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Pois é Reinaldo, eu observei isso, mas tem coisas que eu nem prefiro comentar.

Att

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

 
Postado : 10/07/2014 11:31 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

alexandrevba bom dia!

Muito obrigado pela ajuda.
Era exatamente isso que precisava.

Realmente como foi relatado pelo colega Reinaldo existe algumas discrepância entre as planilhas peço desculpa a você(alexandrevba) e ao colega Reinaldo.

Tenho como objetivo implantar esta macro em outra planilha então na correria(época de copa..rs) criei esta planilha com dados fictícios e critérios parecidos com a planilha onde irei implantar a macro criada pelo colega alexandrevba.

Caro colega alexandrevba sem querer abusar de sua generosidade, mas poderia explicar como funciona a macro.
Gostaria de saber o passo a passo da rotina e como e determinado o núm_índice_coluna do procv.

Desde já agradeço a sua ajuda.

Abraços

fabiosp

 
Postado : 12/07/2014 6:10 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Veja.

Option Explicit


Sub AleVBA_12446()
'Declaração das variáveis
    Dim lastrow As Long
    Dim Rng As Range
    
    'Localiza a ultima linha
    lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    'Prepara o intervalo entre as colunas
    Set Rng = Range(Cells(2, "N"), Cells(lastrow, "AA"))
    
    Application.ScreenUpdating = False
        Range("N2").Select 'Seleciona N2
        Range("N2").Formula = "=VLOOKUP($A2,PARA_CONTATAR!$A$8:$AA$170,column(),0)" 'Aplica a formula em N2
        Range("N2").AutoFill Destination:=Range(Selection, Selection.Offset(0, 13)) 'Arrasta para a direita de N até AA
        Range("N2:AA2").AutoFill Destination:=Rng, Type:=xlFillDefault 'Arrasta para baixo de N até AA
        Range("N2:AA" & lastrow).Value = Range("N2:AA" & lastrow).Value 'Copia e cola valores
    Application.ScreenUpdating = True
     
End Sub

Att

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

 
Postado : 12/07/2014 6:15 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

alexandrevba

Muito obrigado!!
Foi de grande utilidade sua explicação.
Vou tentar implantar na minha planilha.
Abraços.

fabiosp

 
Postado : 12/07/2014 6:46 am