Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

durchschnitt. Rendite v. Investitionen berechnen (VBA)
#1
Hallo zusammen,

ich habe ein Excel in dem ich über meine Investitionen Buch führe. Jede Ivestition hat ein eigenes Blatt (z.B. jede P2P Plattform, jedes Depot, jede Immobilie, jeder Bausparvertrag, jede Kryptowährung, usw.).
Die Blätter sind immer identisch aufgebaut. Nach der Kopfzeile, in der Eckdaten der Investition zusammengefasst werden, beginnt der Verlauf in dem mit Datum jeder Cashflow erfasst wird. Negative Beträge sind Einzahlungen in die Investition und positive Beträge sind Auszahlungen. Die letzte Zeile (mit # in der A Spalte) gibt den Gegenwert der Investition zum angegeben Zeitpunkt wieder. Diese Erfassung dient der Berrechnung des XIRR (interner Zinsfuß) und wird in Zelle E3 angegeben. Also kurz gesagt die Rendite der Investition aufs Jahr gerechnet.

Jetzt würde ich gern die durchschnittliche Rendite einzelner Anlageklassen berechnen, also wie war z.B. die durchschn. Rendite aller P2P Investitionen oder über alle Depots.
Der XIRR benötigt dafür zwei Bereiche, einmal das jeweilige Datum und den dazugehörigen Cashflow nur eben über alle Anlagen hinweg. Ich sehe da keine andere Möglichkeit als das mit VBA zu lösen.
Leider wirds da bei mir etwas dünn was VBA betrifft, meistens finde ich etwas ähnliches dem was ich machen möchte im Netz und baue es um, das klappt oft ganz gut. Aber dieses System stößt hier an seine Grenzen.

Was in VBA passieren müsste (am Beispiel P2P):

- erstelle ein neues Tabellenblatt "temp. Rechenblatt_P2P" (der Schritt ist ggf. gar nicht nötig, da VBA die Daten ja evtl. gar nicht irgendwohin schreiben muss, sonder im Speicher halten kann)
- für alle Tabellenblätter zwischen Start_P2P und Ende_P2P kopiere B19:C#zeile_x# in das neue Tabellenblatt  (#zeile_x# lässt sich finden durch die Zeile in Spalte A in der die # ist; die Zeile darüber ist Zeile_x)
- die kopierten Werte im neuen Tabellenblatt können einfach untereinander stehen, der XIRR braucht die Buchungen nicht in der korrekten Reihenfolge
- für alle Tabellenblätter zwischen Start_P2P und Ende_P2P bilde die Summe über D3 (da steht der aktuellste Wert der Anlage) --> =SUMME(Start_P2P:Ende_P2P!D3)
- füge der Liste auf dem neuen Tabellenblatt ans Ende von B das aktuelle Datum und rechts daneben in C die im vorherigen Schritt ermittelte Summe
- berechnte mit der Formel =XINTZINSFUSS(C1:C9999;B1:B9999;0,1) die Rendite (der Bereich muss nur alle Zahlen abdecken, kann aber beliebig groß sein)
- übertrage die Rendite und lösche das temporäre Blatt wieder

Damit das ganze besser Vorstellbar ist, habe ich im Anhang mal das Excel, gefüllt mit Dummy-Werten. Sofern ein temporäres Blatt erstellt werden muss für die Berechnung, sollte es natürlich nicht wie in meiner Beispieldatei zwischen Start_P2P und Ende_P2P eingefügt werden, da es sonst ja bei der Datenerhebung mit berücksichtig werden würde.

Also mir würden auch schon Codeschnipsel reichen wie z.B. wie adressiere ich alle Tabellenblätter zwischen 2 Blättern usw.

Schöne Grüße
Mark


Angehängte Dateien
.xlsx   durchschnittliche Rendite berechnen.xlsx (Größe: 36,88 KB / Downloads: 8)
Antworten Top
#2
Hallöchen,

zwischen 2 Blättern könntest Du den Blattindex nutzen. Je nach Position der Reiter bekommt ein Blatt einen entsprechenden Zähler.

For Sheets(Sheets("Tabelle1").Index) To Sheets(Sheets("Tabelle99").Index)
...
Next
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste