Функция XIRR с очень низким конечным значением - PullRequest
0 голосов
/ 29 мая 2020

У меня есть макрос, вычисляющий XIRR; раньше говорил мне о доходности инвестиций.

Соответствующий код:

Dim CFArray() As Variant
CFArray = Range("Q22:Q24").Value

Dim DateArray() As Variant
DateArray = Range("L22:L24").Value

ROR = WorksheetFunction.Xirr(CFArray, DateArray, 0.1)

Код работает большую часть времени.

Но когда конечное значение очень низкое, скажем, ноль или пенни, Я получаю

«Ошибка времени выполнения '1004': невозможно получить свойство XIRR класса функции рабочего листа».

Вот мои данные:

Row  Col L         Col Q
22   6/30/2009     999.07
23   5/1/2010         .01

Когда я изменяю окончательное значение (ячейка Q23) на 5.01 или 4.01, я получаю ответ. 3.01 возвращает ту же ошибку, что и выше.

Использование данных в простой старой формуле Excel (в ячейке) дает правильный ответ ... что-то вроде -99,99%.

Некоторые серии будут иметь несколько платежей и выводов, поэтому IRR не вариант. Я считаю, что могу написать код, который буквально записывает функцию Excel в ячейку, но похоже, что VBA должен быть в состоянии приспособить эту важную финансовую функцию.

Спасибо за любые идеи.

...