Acabei escrevendo algum código VBA, obrigado @Lance Roberts Review,
Este código irá realmente percorrer cada linha e coluna procurando entradas em branco, pegando os valores superiores e inferiores e calculando assim.
O único problema é quando a primeira linha se os dados estão em branco.
As colunas são codificadas como 10 devido à preguiça.
Sub SetAverages()
Dim lastrow As Integer, ncol As Integer, nrow As Integer
Dim secondvalrow As Integer, blankrows As Integer
Dim difference As Double, Increment As Double
Range("A65535").End(xlUp).Select
lastrow = ActiveCell.Row
For ncol = 2 To 10
For nrow = 2 To lastrow 'start after header row
If Cells(nrow + 1, ncol).Value = "" Then
secondvalrow = nrow + 1
Do Until Cells(secondvalrow, ncol).Value <> "" Or secondvalrow = lastrow + 1
secondvalrow = secondvalrow + 1
Loop
blankrows = secondvalrow - nrow
difference = Cells(secondvalrow, ncol).Value - Cells(nrow, ncol).Value
Increment = difference / blankrows
For i = nrow + 1 To secondvalrow - 1
Cells(i, ncol).Value = Cells(i - 1, ncol).Value + Increment
Next i
End If
Next nrow
Next ncol
End Sub