Если вам нужно использовать VBA вместо некоторой формулы (см. Другой ответ!), Вот несколько довольно простых макросов:
До:

Макрос:
Sub Test()
With ActiveWorkbook.Sheets(1)
LR = .Cells(Rows.Count, 1).End(xlUp).Row
LC = .Cells(1, Columns.Count).End(xlToLeft).Column
Set RNG = .Range(Cells(1, 1), Cells(LR, LC))
With RNG
Set CL = .Find("/", LookIn:=xlValues)
If Not CL Is Nothing Then
FA = CL.Address
Do
X = 1
If CL.Offset(1, 0) <> "/" Then
CL.Value = WorksheetFunction.Average(CL.Offset(-1, 0), CL.Offset(1, 0))
Else
Do
X = X + 1
Loop While CL.Offset(X, 0).Value = CL.Value
CL.Value = WorksheetFunction.Average(CL.Offset(-1, 0), CL.Offset(X + 1, 0))
End If
Set CL = .FindNext(CL)
If CL Is Nothing Then
GoTo DF
End If
Loop While CL.Address <> FA
End If
DF:
End With
End With
End Sub
После:

Вам, очевидно, придется изменить RNG
в соответствии с вашими потребностями, например: .Range(Cells(3, 2), Cells(LR, LC))
?
Также обратите внимание, что я начал со второго ряда и остановлюсь перед предыдущим рядом, вам придется проверять их вручную, поскольку он не может быть средним из смежныхклетки.