Inquiridor
REPLICAR A FORMULA PARA AS DEMAIS LINHAS - EXCEL VBA

Pergunta
-
Olá, Caros Amigos Desenvolvedores.
Estou com uma duvida, gostaria de uma ajuda.
Em minha planilha tenho 2 colunas com dados; Onde na segunda coluna tenho linhas sem dados.
Eu ordeno na segunda coluna os dados do maior ao menor, e em, seguida realizo um PROCV em outra planilha para trazer esses dados faltantes. Meu problema está sendo para replicar meu PROCV até a última linha com dados (baseando se na 1ª coluna)
Oque montei:
Sub PROCV() ' ' PROCV Macro ' 'CLASSIFICAÇÃO DO MAIOR PARA O MENOR. ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort.SortFields.Add Key:=Range( _ "N2"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 'DEFINI A ÚLTIMA LINHA VAZIA NA COLUNA ONDE VOU REALIZAR MEU PROCV Range("N2").End(xlDown).Offset(1, 0).Select 'APLICO A FORMULA DO MEU PROCV ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],[BASE_PRODUTOS.xlsm]DS!C3:C5,3,0)" 'PRECISO QUE ESSA FORMULA SEJA EXECUTADA ATÉ A ÚLTIMA LINHA DOS VALORES PROCURADOS NO PROCV End Sub
Seria isso:
Desde já fico muito grato pela ajuda.
Jhonny César de Paula
Obrigado! Jhonny César de Paula
Todas as Respostas
-
Experimente acrescentar as 2 linhas abaixo no final do seu código.
LastRow = Cells(Rows.Count, "M").End(xlUp).Row Range("N2").AutoFill Range("N2").Resize(LastRow)
Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br
-
Ricardo,
Inclui os códigos que mencionou, porém não deu certo.
Ele não realizou o PROCV, apenas replicou os dados da 1ª linha para as demais e ainda trouxe 1 linha a mais.
Meu código:
Sub GNAT02() ' ' GNAT02 Macro 'CLASSIFICAÇÃO DO MAIOR PARA O MENOR. ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort.SortFields.Add Key:=Range( _ "N2"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 'DEFINI A ÚLTIMA LINHA VAZIA NA COLUNA ONDE VOU REALIZAR MEU PROCV Range("N2").End(xlDown).Offset(1, 0).Select 'APLICO A FORMULA DO MEU PROCV ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],[BASE_PRODUTOS.xlsm]DS!C3:C5,3,0)" LastRow = Cells(Rows.Count, "M").End(xlUp).Row Range("N2").AutoFill Range("N2").Resize(LastRow) 'PRECISO QUE ESSA FORMULA SEJA EXECUTADA ATÉ A ÚLTIMA LINHA DOS VALORES PROCURADOS NO PROCV SEJA "VAZIO" End Sub
Obrigado! Jhonny César de Paula
-
Jhonny
Faça o teste agora, após este ajuste.
Sub GNAT02() ' ' GNAT02 Macro 'CLASSIFICAÇÃO DO MAIOR PARA O MENOR. ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort.SortFields.Add Key:=Range( _ "N2"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 'DEFINI A ÚLTIMA LINHA VAZIA NA COLUNA ONDE VOU REALIZAR MEU PROCV Range("N2").End(xlUp).Offset(1, 0).Select 'APLICO A FORMULA DO MEU PROCV ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],[BASE_PRODUTOS.xlsm]DS!C3:C5,3,0)" LastRow = Cells(Rows.Count, "M").End(xlUp).Row Range("N2").AutoFill Range("N2").Resize(LastRow - 1) 'PRECISO QUE ESSA FORMULA SEJA EXECUTADA ATÉ A ÚLTIMA LINHA DOS VALORES PROCURADOS NO PROCV SEJA "VAZIO" End Sub
Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br
-
Bom Dia, Ricardo.
Resolveu o problema dele parar na linha correta, só que a formula do PROCV não está funcionando.
Antes e o depois da sua sugestão:
No meu código eu consegui que a formula fosse executada na "N6" que era a primeira linha vazia da coluna "N" Eu só não consigo expandir isso para as demais linhas da coluna.
OBS: Realizei uma alteração no código do PROCV para ele busca na coluna "-1" ao invés da "-3"
Meu código com sua sugestão:
Sub GNAT02() ' ' GNAT02 Macro ' ' 'CLASSIFICAÇÃO DO MAIOR PARA O MENOR. ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort.SortFields.Add Key:=Range( _ "N2"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 'DEFINI A ÚLTIMA LINHA VAZIA NA COLUNA ONDE VOU REALIZAR MEU PROCV Range("N2").End(xlDown).Offset(1, 0).Select 'APLICO A FORMULA DO MEU PROCV ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],[BASE_PRODUTOS.xlsm]DS!C3:C5,3,0)" 'SUGESTAO DO RICARDO VBA: LastRow = Cells(Rows.Count, "M").End(xlUp).Row Range("N2").AutoFill Range("N2").Resize(LastRow - 1) End Sub
desde já agradeço a ajuda!
Obrigado! Jhonny César de Paula
-