Hi Leute,
habe da mal ein wichtiges Problem. Möchte mit VBA ein auf einem Excel Blatt abgelegten Datensatz in einen Array laden und daraus auf VBA Ebene den IRR (Internen Zinsfuß [ - Nullstellen der Barwertfunktion]) berechnen. Bevor ich mit der Problemdarstellung anfange hier erstmal der Datensatz und der CODE:
1. DATENSATZ der zu Problemen führt:
-1,00000; -0,01722; 0,01299; 0,03883; 0,04195; 0,01688; 0,00795; 0,13332; 0,01149; -0,03944; -0,10586; -0,10670; -0,12204; -0,12883; -0,09204; 0,07020; 0,32919; 0,34563;
2. CODE:
Static DataStore(18) As Double
For i = 0 To 18
DataStore(i) = 0
Next i
i = 1
DataStore(0) = -1 'Einlesen des ersten Elementes des Datensatzes, dieser ist IMMER -1
Do until "ABBRUCHBEDINGUNG"
DataStore(i) = SLAVE.Sheets(SSHEET2).Cells(23, X2 - 1 + ZeigerX3).Value
'Der DataStore liest die weiteren Elemente für den IRR ein
i = i + 1
loop
IntZins = IRR(DataStore(), 0#)
3. PROBLEM
Also folgendes: Obiger Datensatz ist nur einer von tausenden, die ohne Probleme funktionieren, da die sonstigen Datensätze zu einem positiven Zinsfuß führen. Speziell obiger Datensatz hat aber leider einen negativen Zinsfuß (etwa -5%). Mit meinem oben dargestellten Code, findet das der PC aber nicht heraus, sondern gibt eine Fehlermeldung an. Wenn ich nun die IRR-Funktion modifiziere: IRR(DataStore(), -0.05) indem ich den Schätzwert 0 mit -0.05 ersetze und neu abfahre bemerkt der PC, dass tatsächlich doch ein Zinsfuß vorhanden ist. Mein Problem ist also, dass ich eine geeignete IRR-Funktion suche, die NIE zu einem Problem führt, gerne auch mit programmierten Umwegen aber hauptsache das Ergebnis macht Sinn und es entstehen keine Probleme. Leider bringt es nichts, daß ich konsequent - 0.05 als Schätzwert eingebe, weil es auch Datensätze gibt mit einem Zinsfuß von - 20%, die dann immernoch zu einem Problem führen. Wenn ich nun "ganz klug" als Schätzwert -100% eingebe, läuft zwar alles ABER die IRR Funktion findet nur noch die negativen Zinsfüsse, obwohl viele Datensätze zusätzlich die viel wichtigeren positiven Zinsfüsse besitzen und diese dann unberücksichtigt bleiben.
Hat jemand eine Anregung, was ich im obigen Code umschreiben sollte, damit mein Problem gelöst ist?
Wäre für Hilfe äusserst dankbar,
MFG, PARIAH
habe da mal ein wichtiges Problem. Möchte mit VBA ein auf einem Excel Blatt abgelegten Datensatz in einen Array laden und daraus auf VBA Ebene den IRR (Internen Zinsfuß [ - Nullstellen der Barwertfunktion]) berechnen. Bevor ich mit der Problemdarstellung anfange hier erstmal der Datensatz und der CODE:
1. DATENSATZ der zu Problemen führt:
-1,00000; -0,01722; 0,01299; 0,03883; 0,04195; 0,01688; 0,00795; 0,13332; 0,01149; -0,03944; -0,10586; -0,10670; -0,12204; -0,12883; -0,09204; 0,07020; 0,32919; 0,34563;
2. CODE:
Static DataStore(18) As Double
For i = 0 To 18
DataStore(i) = 0
Next i
i = 1
DataStore(0) = -1 'Einlesen des ersten Elementes des Datensatzes, dieser ist IMMER -1
Do until "ABBRUCHBEDINGUNG"
DataStore(i) = SLAVE.Sheets(SSHEET2).Cells(23, X2 - 1 + ZeigerX3).Value
'Der DataStore liest die weiteren Elemente für den IRR ein
i = i + 1
loop
IntZins = IRR(DataStore(), 0#)
3. PROBLEM
Also folgendes: Obiger Datensatz ist nur einer von tausenden, die ohne Probleme funktionieren, da die sonstigen Datensätze zu einem positiven Zinsfuß führen. Speziell obiger Datensatz hat aber leider einen negativen Zinsfuß (etwa -5%). Mit meinem oben dargestellten Code, findet das der PC aber nicht heraus, sondern gibt eine Fehlermeldung an. Wenn ich nun die IRR-Funktion modifiziere: IRR(DataStore(), -0.05) indem ich den Schätzwert 0 mit -0.05 ersetze und neu abfahre bemerkt der PC, dass tatsächlich doch ein Zinsfuß vorhanden ist. Mein Problem ist also, dass ich eine geeignete IRR-Funktion suche, die NIE zu einem Problem führt, gerne auch mit programmierten Umwegen aber hauptsache das Ergebnis macht Sinn und es entstehen keine Probleme. Leider bringt es nichts, daß ich konsequent - 0.05 als Schätzwert eingebe, weil es auch Datensätze gibt mit einem Zinsfuß von - 20%, die dann immernoch zu einem Problem führen. Wenn ich nun "ganz klug" als Schätzwert -100% eingebe, läuft zwar alles ABER die IRR Funktion findet nur noch die negativen Zinsfüsse, obwohl viele Datensätze zusätzlich die viel wichtigeren positiven Zinsfüsse besitzen und diese dann unberücksichtigt bleiben.
Hat jemand eine Anregung, was ich im obigen Code umschreiben sollte, damit mein Problem gelöst ist?
Wäre für Hilfe äusserst dankbar,
MFG, PARIAH