Notifications
Clear all

Selecionar Range com intervalo dinâmico

6 Posts
2 Usuários
0 Reactions
1,685 Visualizações
(@igorpaula)
Posts: 0
New Member
Topic starter
 

Olá galera,

Preciso de uma ajuda de vocês, procurei em tudo que é canto e ainda não descobrir como fazer.

Seguinte, preciso fazer que uma fórmula seja adicionada numa célula e que estenda essa fórmula até uma célula especificada, mas a célula inicial é dinâmica, todos os dias, essa célula muda:

    Range("B1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.Offset(0, 9).Select
        ActiveCell.FormulaR1C1 = _
        "=IFERROR(IF(RC[-2]="""","""",VLOOKUP(RC[-2],BASE1!C8:C20,COLUMN(C[-8]),0)),""NÃO EMITIDO"")"
        Selection.AutoFill Destination:=Range(Inicial até "K5000"), Type:=xlFillDefault

Na parte Range(Inicial até "K5000") que estou agarrado.

Não consigo pensar em como fazer isso, em como atribuir uma variável.

Conseguem me ajudar?!

PS: Esse range é referente á uma coluna, quero arrastar a fórmula para baixo.

 
Postado : 26/07/2018 8:25 am
(@xlarruda)
Posts: 0
New Member
 

blz mas...

A célula inical muda de acordo com o que?

 
Postado : 26/07/2018 8:30 am
(@igorpaula)
Posts: 0
New Member
Topic starter
 

É como se fosse um histórico, todos os dias é atualizado e é inserido mais informação na planilha, lógico, abaixo do que já existe, por isso a célula inicial do range muda, não consigo colocar um Range fixo pois as informações que consegui no dia anterior com a fórmula, são coladas ao final do dia como valores, para manter o histórico.

 
Postado : 26/07/2018 10:22 am
(@xlarruda)
Posts: 0
New Member
 

Segue conforme pedido:

Sub Inserir_Formula()
Dim ul As Long
Dim area As Range
ul = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row + 1
Set area = ActiveSheet.Range("K" & ul & ":K5000")
ActiveSheet.Range("K" & ul).Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(RC[-2]="""","""",VLOOKUP(RC[-2],BASE1!C8:C20,COLUMN(C[-8]),0)),""NÃO EMITIDO"")"
Selection.AutoFill Destination:=area, Type:=xlFillDefault
End Sub
 
Postado : 26/07/2018 10:44 am
(@igorpaula)
Posts: 0
New Member
Topic starter
 

xlarruda

xlarruda, muito obrigado pela solução, funcionou perfeitamente como desejado, fantástico.

Se, não for demais pra ti, teria como me dar uma explicada na lógica do código?

Editado por Patropi-Moderador:
Use o botão responder que fica logo abaixo da janela de resposta, não use o botão citar sem necessidade.

 
Postado : 26/07/2018 12:25 pm
(@xlarruda)
Posts: 0
New Member
 

Segue o código com explicação:

Sub Inserir_Formula()
Dim ul As Long  ' declarando variavel de ultima linha
Dim area As Range ' declarando a area de inserção da formula
ul = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row + 1 'aqui define a primeira linha vazia depois da ultima preenchida
Set area = ActiveSheet.Range("K" & ul & ":K5000") ' definindo a area em que a formula sera preenchida
ActiveSheet.Range("K" & ul).Select ' selecionando a primeira celula vazia da coluna k
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(RC[-2]="""","""",VLOOKUP(RC[-2],BASE1!C8:C20,COLUMN(C[-8]),0)),""NÃO EMITIDO"")" ' inserindo a formula nessa celula
Selection.AutoFill Destination:=area, Type:=xlFillDefault  'arrastando a formula por toda a area definida
End Sub'fim
 
Postado : 26/07/2018 12:46 pm