Microsoft Excel

Herbers Excel/VBA-Archiv

IRR-Funktion mit Array kombinieren | Herbers Excel-Forum


Betrifft: IRR-Funktion mit Array kombinieren von: Boris
Geschrieben am: 10.12.2009 16:40:30

Hallo,

ich habe folgende Frage zur Berechnung des IRR (zu deutsch IKV), erläutert an einem stark vereinfachten Beispiel:

Aus einem in den Zellen B7 bis D7 berechneten Cashflowprofil berechne ich den IRR mit der Formel: =IRR(B7:D7). Möchte ich nun diverse IRR für verschiedene Eingangsparameter gleichzeitig darstellen, muss ich das Cashflowprofil entsprechend vervielfältigen (siehe Bild linke Seite). Für eine 3x3-Matrix wie auf der rechten Seite dargestellt, müsste ich also die Tabelle 9 mal kopieren und die Eingabeparameter variieren.

Mein Ziel ist es also, der IRR-Formel das Cashflowprofil in Form eines Arrays zu übergeben. Die Eingabe, so wie oben rechts dargestellt, ist leider nicht möglich ( =irr($F4;300;300+H$2) ), da die IRR-Formel ein Array erwartet. Wie löse ich das?

Habe schon ein wenig rumgespielt: =IRR({-1000;300;2000}) wird von Excel verstanden, nur hat es bisher nicht geklappt diese eckige Klammer dort reinzufummeln (z.B. mit INDIRECT). Ich möchte auch nicht die Table-Funktion verwenden, da diese die Datei unsterblich langsam macht...



Viele Grüße,
Boris

  

Betrifft: IKV-Funktion mit Zelladressen und Werten von: NoNet
Geschrieben am: 10.12.2009 17:09:43

Hallo Boris,

versuche mal folgende Funktion :

=IKV(N(INDIREKT({"$F4";"A1";"H$2"}))+N({0;300;300}))

(engl.: =IRR(N(INDIRECT({"$F4","A1","H$2"}))+N({0,300,300}))

In A1 muss dabei 0 stehen bzw. eine leere Zelle sein !

Gruß, NoNet


  

Betrifft: AW: IKV-Funktion mit Zelladressen und Werten von: Boris
Geschrieben am: 10.12.2009 18:11:02

Hallo,

das ist schonmal nicht schlecht, allerdings verstehe ich den Term INDIREKT({".."}) nicht, v.a. dass die eckigen Klammern innerhalb von INDIREKT stehen.

Diese Lösung löst jedoch leider mein Problem nicht, da ich das Beispiel zu stark vereinfacht habe. Wie man unten sieht, beeinflusst der 1. Eingabeparameter auch den Gesamtcashflow nach Finanzierung. Ich müsste also innerhalb der IRR-Funktion auch rechnen können bzw. die einzelnen Cashflows einzeln übergeben, also =IRR(C1;C2;C3;C4;usw.) wobei C# für komplizierte Formeln stehen....?





  

Betrifft: "Excel Profi" ? - Ich verstehe DEINE Tabelle nicht von: NoNet
Geschrieben am: 10.12.2009 18:31:07

Hallo Boris,

unter "Excel Profi" erwarte ich eigentlich, dass man die o.g. Funktion versteht :

Mit N(INDIRECT({"..","..",".."})) kann man die Zellwerte der in der Matrix angegebenen Zelladressen als Wertematrix an die vorgeschaltete Funktion übergeben - z.B. die Matrix, die die IRR()-Funktion benötigt !

Im Gegenzug verstehe ich allerdings Dein Anliegen/Problem nicht :

in den Zellen C1;C2;C3;C4;usw. können natürlich auch Formeln/Funktionen enthalten sein, vorausgesetzt, sie ergeben als Resultat verwertbare Zahlen !

Vielleicht wäre es hilfreicher, wenn Du Deine Mappe (gerne auch stark reduziert) hier einmal hochlädst und nochmal erklärst, WO die Funktion erstellt werden soll und welche Problematik dabei auftritt !?!

Gruß, NoNet


  

Betrifft: AW: "Excel Profi" ? - Ich verstehe DEINE Tabelle nicht von: Boris
Geschrieben am: 11.12.2009 10:12:02

Hallo NoNet,

auf das Thema was ein Excel-Profi ist und ob ich einer bin, gehe ich jetzt nicht ein. Diskussionen dieser Art finde ich überflüssig. Dass mit N(INDIRECT({"..","..",".."})) eine Matrix übergeben wird ist mir schon klar. Ich verstehe nur nicht, dass man die Matrix-Klammern { } innerhalb der INDIRECT-Funktion anwendet, da ich erwarte, dass INDIRECT versucht daraus einen Bezug zu basteln.

Zum eigentlichen Problem habe ich folgende Beispieldatei vorbereitet, die immer noch stark vereinfacht ist, aber die Grundzüge aufzeigt.

https://www.herber.de/bbs/user/66510.xls

Viele Grüße,
Boris


  

Betrifft: ist da jemand etwas überheblich??? von: Björn B.
Geschrieben am: 11.12.2009 10:43:24

Hallo Boris,

sorry, wenn ich mich da einmische, aber solche Aussagen kannst Du Dir echt sparen:

auf das Thema was ein Excel-Profi ist und ob ich einer bin, gehe ich jetzt nicht ein. Diskussionen dieser Art finde ich überflüssig. 
Ich gebe NoNet völlig recht, wenn Du Profi wärst, dann müsstest du das verstehen, wenn du gut wärst, dann könntest du das selbst in der Hilfe nachlesen.

Dieses Forum ist so aufgebaut, dass der Fragesteller sich selbst einstuft, wie gut er sich mit der Materie auskennt. Das hilft vor allem dem Antworter, dass er weiß, in "welcher Sprache" er mit dem Fragesteller schreiben kann.
Einem Profi muss einfach nicht so viel erklären wie einem blutigen Anfänger, wenn sich aber einer als Profi ausgibt und dann (sorry) so einfache Dinge nicht versteht (und sich selbst auch nicht zu helfen weiß), dann ist es mehr als verständlich, wenn man sich dafür einen entsprechenden Kommentar abholt.
Wenn Du damit nicht leben kannst, dann ist das leider das falsche Forum für Dich, da hier viele wie NoNet oder ich gerne mal bissige Kommentare abgeben und anderen auch mal die Meinung sagen.

Gruß
Björn B.


  

Betrifft: Sorry - verstehe es immer noch nicht... von: NoNet
Geschrieben am: 11.12.2009 11:19:43

Hallo Boris,

sorry - ich wollte Dir nichts ans Revers heften, ich dachte nur wirklich, dass ein Excel-Profi die Funktion verstehen würde, ansonsten hätte ich sie etwas ausführlicher erklärt. Auf welchem Kenntnisstand jemand sich selbst einstuft ist natürlich immer subjektiv und wohl für jeden sehr schwierig einzuschätzen. Für die Antwortenden spielt das - wie von Björn beschrieben - nur bzgl. der Erläuterungstiefe eine Rolle, ansonsten sollte es wirklich egal sein, ob jemand seit 10 Jahren oder länger oder erst seit 4 Wochen mit Excel arbeitet. Ich wollte dieses Thema jedoch nicht so heiß kochen, wie es bei Dir evtl. angekommen ist - sorry dafür !

Die Funktion INDIRECT() erwartet in der Tat Zelladressen - diese sind in der Matrix ja auch in Form von Texten enthalten. Da das zweite Argument nur einem festen Wert entsprechen soll, habe ich hier eine (leere) Zelle mit Wert 0 (Zelle A1) gewählt, da das Argument nicht leer bleiben darf. Da INDIRECT jedoch keine Matrix verarbeiten kann (bzw. nur das ERSTE Element der Matrix verarbeitet), wird die gesamte Funktion in die Funktion N() eingebettet, so dass daraus nun doch eine Wertematrix entsteht - das ist eines der Besonderheiten von Excel und MATRIX-Funktionen. Mit den NUMERISCHEN Werten (dafür steht N() eigentlich !), wird diese Matrix nun mit einer zweiten numerischen Wertematrix addiert und das Gesamtergebnis als Matrix an die IRR()-Funktion übergeben :

=IRR(N(INDIRECT({"$F4","A1","H$2"}))+N({0,300,300}))

Nun oute ich mich aber auch : Ich bin absolut KEIN PROFI was finanzmathematische Kalkulationen anbelangt und daher verstehe ich deine Beispiletabelle nicht so ganz (sie ist leider nur äusserst mager dokumentiert !) :

- Welche Werte sollen in der IKV()/IRR()-Funktion berücksichtigt werden (ich vermute mal B20:E20) ?
- In Deinem ersten Screenshot standen in der Ergebnistabelle obe absolute Zahle, nun sind es %-Werte worauf beziehen diese sich ?
- Sollte in I10 nicht der Bezug =B7 und in K8 =E7 stehen oder stehen diese Grössen nicht in Bezug ?

Vielleicht kannst Du einem Finanz-LAIEN das ganze nochmal etwas ausführlicher erläutern, dann kann ich das als EXCEL-PROFI ;-) evtl. formeltechnisch umsetzen. Der o.g. Ansatz dürfte als Grundlage bereits stimmen.

Gruß, NoNet


  

Betrifft: AW: Sorry - verstehe es immer noch nicht... von: Boris
Geschrieben am: 14.12.2009 10:25:32

Hallo NoNet,

genau das wollte ich auch nicht, unnötig dieses Thema heißkochen. Ich gebe Dir in allem Recht und mir ist klar, wofür man sein Level angibt. Bisher habe ich allerdings noch nie mit Matrixkonstanten, sondern nur mit Matrixformeln gearbeitet. Und auch diese versuche ich in der Regel zu vermeiden, da sie enormen Rechenaufwand verursachen. Ich bin nach wie vor der Meinung, dass meine Excel-Kenntnisse sehr umfangreich sind und blöd bin ich auch nicht unbedingt. Ich will ja auch nur ein Problem lösen, nicht streiten und bin dankbar, dass es dieses Forum gibt...

Mir war und ist immer noch lediglich unklar, warum INDIRECT die {} verarbeiten kann, da Ref_text in INDIRECT entweder ein Bezug zu einer Zelle, ein definierter Name oder ein Bezug in Form von Text sein muss, ansonsten liefert INDIRECT einen #REF! Fehler.

Nun zum eigentlichen Problem: Eine Maschine/Gebäude oder was auch immer wirft in Jahr 1 einen Gewinn von €10.000 ab. Über Cap t0 (=Anfangsrendite) bestimmt man, zu welchem Preis man diese Maschine kauft. Gewinn t0 / Kaufpreis = Rendite, oder Kaufpreis = Gewinn t0 / Rendite, also 200.000 = 10.000 / 5%. Den Kauf finanziert man zu 70% mit einem Kredit, also muss man in t0 bei einem LTV (loan to value) von 70% nur 30% an eigenen Mitteln aufbringen, oder auch -200.000 + 70% * 200.000 = -60.000. In Periode 1 bis 3 wirft die Maschine nun Gewinne ab und in der 3. Periode wird sie wieder verkauft. In der Zwischenzeit "läuft" der Kredit, den man laufend tilgt und am Ende mit Hilfe des Verkaufserlöses komplett tilgt. Gleichzeitig muss man natürlich auch Zinsen bezahlen.

Berechnet werden soll nun der Gesamtcashflow nach Finanzierung (B20:E20).

Du hast recht, man könnte in I10 und K8 auch Bezüge verwenden, ist aber nicht zwingend erforderlich.

Meine Idee wäre nun, die einzelnen Positionen der Gesamtsumme der einzelnen Perioden in ausschließlicher Abhängigkeit der Eingangsparameter zu bestimmen (blaue und rote Werte) und diese dann in die IRR-Funktion zu integrieren, also:

IRR ( {Kauf} + {Cashflows} + {Zinsen} + {Tilgung} + {Verkauf} ).

nur leider können die Argumente von Matrixkonstanten keine Formeln enthalten....!?

Gruß, Boris


  

Betrifft: Na, dann bemühe doch mal die Hilfe und... von: Luc:-?
Geschrieben am: 11.12.2009 12:08:27

...schlage das Stichwort Matrixkonstante nach, du xlProfi...!
Das gibt's inzwischen auch schon in OOcalc3.0, wenn's da auch nicht fkt. In Linux' Gnumeric gibt's das auch und da fktioniert's sogar!
Luc :-?


Beiträge aus den Excel-Beispielen zum Thema "IRR-Funktion mit Array kombinieren"