Excel VBA para preencher uma coluna com fórmula até (última célula preenchida em outra coluna)

1

Portanto, eu tenho uma planilha do Excel, coluna A é preenchida com dados (o intervalo é diferente everytime)
Eu quero preencher o vazio col H com fórmula (de H2 para a última célula preenchida em colA)

Este é o código em que me referi de vários sites.
Mas só preencheu H1 e H2, onde eu quero H2: H6, neste caso. Saída atual usando xlUp.
colC, D, E, F são algo que pode ser ignorado no momento.

EutenteimudarxlUpparaxlDown.
Funcionou,masencheucadacéluladeH2aH(infinito),quandoalgunsdadosnacolAparamnalinha60.

SubTry()DimlRowAsLonglRow=Range("A" & Rows.Count).End(xlUp).Row

Sheets("Sheet4").Select
Range("H2:H" & lRow).Select
Worksheets("Sheet4").Range("H2").FormulaR1C1 = "=(RC[-6])/(RC[-1])"

Range("H2").AutoFill Destination:=Range("H2:H" & lRow)

End Sub

Alguém por favor pode apontar o meu erro?

Eu conheço parte do método usando Active Cells, mas não quero usá-lo porque às vezes não sei onde meu celular está ativo? como eu não sei qual célula está selecionada no momento. (por favor, deixe-me saber se eu tenho a idéia errada de celular ativo)

Obrigado.

    
por ExcelNovice 10.04.2017 / 11:20

1 resposta

2

Isso deve funcionar para você. Ele seleciona o intervalo de dados na coluna A e, em seguida, desloca-o para a coluna H. Esse intervalo será fornecido para o preenchimento automático.

Option Explicit

Dim rng As Range
Dim wsh As Worksheet

Sub Second_Try()

  Set wsh = Worksheets("Sheet4")
  wsh.Activate

  wsh.Cells(1, "H") = "ans."

  Set rng = Range(wsh.Cells(2, 1), wsh.Cells(2, 1).End(xlDown))

  Set rng = rng.Offset(0, 7)

  wsh.Range("H2").FormulaR1C1 = "=(RC[-6])/(RC[-1])"
  Range("H2").AutoFill Destination:=rng

  'instead of these last two rows you can simply use this:
  'rng.FormularR1C1 = "=(RC[-6])/(RC[-1])"

End Sub

Pessoalmente, prefiro esta solução, uma vez que não seleciona intervalos e lida apenas com as células até que haja uma célula vazia.

Option Explicit

Dim i As Integer
Dim wsh As Worksheet

Sub Third_Try()

 Set wsh = Worksheets("Sheet4")

 i = 2
 While wsh.Cells(i, 1) <> ""

  wsh.Cells(i, 8).FormulaR1C1 = "=(RC[-6])/(RC[-1])"

  i = i + 1
 Wend

End Sub
    
por 10.04.2017 / 17:04