Você não precisa do VBA para isso, você quase o usou com sua própria fórmula. Você só precisa usar B1 em vez de A1. Então B2 conteria:
=IF(A2="",B1,A2)
Então, digamos que eu tenha os seguintes valores:
A2=a, A5=b, A6=c, A10=d
Basicamente, quero concluir os valores anteriores da seguinte forma:
A2:A4=a,A5=b, A6:A9=c,A10:A99999=d
Eu tentei isso: inseri uma nova coluna à direita e fiz algo assim: =IF(A2="",A1,A2)
, mas isso funciona apenas para as duas primeiras instâncias na coluna B, pois há mais lacunas e nem sempre há o mesmo número de lacunas. Estou perdendo algo obviamente.
Obrigado.
Experimente esta macro curta:
Sub FillDown()
Dim rng As Range, r As Range
Set rng = Range("A2:A99999")
Application.ScreenUpdating = False
For Each r In rng
v = r.Value
If v = "" Then r.Value = r.Offset(-1, 0)
Next r
Application.ScreenUpdating = True
End Sub
As macros são muito fáceis de instalar e usar:
Se você salvar a pasta de trabalho, a macro será salva com ela. Se você estiver usando uma versão do Excel posterior a 2003, deverá salvar o arquivo como .xlsm em vez de .xlsx
Para remover a macro:
Para usar a macro do Excel:
Para saber mais sobre macros em geral, consulte:
e
As macros devem estar ativadas para que isso funcione!