Hallo Ralf,
besten Dank für den zündenden Gedanken. Ich weiß nicht warum, aber wenn ich in der Funktion ALLE erforderlichen Werte abfrage, aktualisiert er den jeweiligen Zellenwert auch bei Änderung des Diskontsatzes (s.u.). Danke für deine Hilfe!
Viele Grüße
Flieger
Public diskontsatz As Double
Function BuffettFairValue(diskontsatz, letzterGewinn, wachstum1_5, wachstum6_10, ausstehendeaktien)
Dim fairValue As Double
Dim zeile As Integer
fairValue = 0
' Diskontsatz
diskontsatz = diskontsatz / 100
' Aktuelle Zeilennummer basierend auf der aktiven Zelle
zeile = ActiveCell.Row
' Eingabewerte aus der aktuellen Zeile
wachstum1_5 = wachstum1_5 / 100
wachstum6_10 = wachstum6_10 / 100
terminalwachstum = wachstum6_10
' Berechnung des Fair Value
fairValue = letzterGewinn / (1 + diskontsatz)
' Berechnung des Gewinnwachstums für die nächsten 5 Jahre
For i = 1 To 5
abzinsung = (1 + diskontsatz) ^ i
fairValue = fairValue + (letzterGewinn * (1 + wachstum1_5)) / abzinsung
If i = 1 Then
Endgewinn = letzterGewinn * (1 + wachstum1_5)
Else
Endgewinn = Endgewinn * (1 + wachstum1_5)
End If
Next i
' Berechnung des Gewinnwachstums für die nächsten 5 Jahre
For i = 5 To 10
abzinsung = (1 + diskontsatz) ^ i
fairValue = fairValue + (letzterGewinn * (1 + wachstum6_10)) / abzinsung
Endgewinn = Endgewinn * (1 + wachstum6_10)
Next i
' Berechnung des Restwerts nach 10 Jahren
Restwert = (Endgewinn * (1 + terminalwachstum)) / 0.05 ' Kapitalisierungssatz von 5% angenommen
Restwert_akt = Restwert * 1 / abzinsung
' Marktwert der Firma
Marktwert = fairValue + Restwert_akt
BuffettFairValue = Marktwert / ausstehendeaktien
End Function
|