Coloque este código do VBA na planilha:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wks As Worksheet
Set wks = ActiveSheet
cellempty = False
i = 1
'Check the max. number of rows
While cellempty = False
a = Cells(i, 2)
If a = "" Then
finalrow = i - 1
cellempty = True
End If
i = i + 1
Wend
'Going row by row
For i = 1 To finalrow
If IsNumeric(Cells(i, 2)) Then 'check if cell in column B is numeric
If Cells(i, 1) = "" Then 'check if cell in column A is empty
'goes upward on column A to find a non-empty value
For j = i To 1 Step -1
If Cells(j, 1) <> "" Then
Cells(i, 1) = Cells(j, 1) 'copy value to cell
j = 1
End If
Next j
End If
End If
Next i
End Sub
é uma coisa muito básica que você pode aperfeiçoar para se adaptar às suas necessidades. Ele assume que os dados estão nas colunas A e B e serão executados sempre que houver uma alteração na planilha.