Você pode usar uma função de mudança de planilha em vba. Algo como
Private Sub Worksheet_Change(ByVal target As Range)
If Intersect(target, Range("e7:e8")) Is Nothing Then Exit sub
Application.enableevents = False
ActiveSheet.range("A4").formula="=if(e7="""",e8*765,e7*960)"
Application.enableevents = True
End Sub
Sempre que a planilha muda, verifica se a célula foi alterada e7 ou e8. Se fosse, coloca a fórmula
=if(e7="",e8*765,e7*960)
na célula A4. Se você colocar um valor na célula A4, ele permanecerá até que você altere novamente e7 ou e8. Talvez seja necessário ajustar para fazer exatamente o que você quer, mas a ideia está lá.
Isto iria no objeto de planilha sob objetos microsoft excel em vba.
EDITAR:
Para se encaixar nos comentários.
Novo código, este só fará algo se a célula tiver um valor adicionado ou alterado, ele não será executado se você excluir um valor.
Em seguida, verifica se e7 foi editado. Se foi e8 é excluído. Se não foi, nós sabemos que o e8 foi editado para que o e7 seja deletado. A fórmula permanece a mesma.
Private Sub Worksheet_Change(ByVal target As Range)
If Intersect(target, Range("e7:e8")) Is Nothing Or target.Value = "" Then Exit Sub
Application.EnableEvents = False
ActiveSheet.Range("A4").Formula = "=if(e7="""",e8*765,e7*960)"
If Intersect(target, Range("e7")) Is Nothing Then
ActiveSheet.Range("e7").ClearContents
Else
ActiveSheet.Range("e8").ClearContents
End If
Application.EnableEvents = True
End Sub